Colonne d'affichage SQL Server délimitée par rapport à une key répétable

S'il vous plaît, aidez-moi à écrire une requête SQL. J'ai un Name table avec ces colonnes et des exemples de données:

 ID FIRSTNAME SURNAME FULLNAME --------------------------------------------------- 1 JOHN PETER JOHN PETER 2 PETER JACKSON PETER JACKSON 3 JOHN PAUL JOHN PAUL 3 JOHN SECONDNAME JOHN SECONDNAME 

Nom complet est le prénom + espace + nom de famille et l'ID peut répéter.

Je veux append une autre colonne OTHERNAMES : elle CONCATENERA avec TOUS les prénoms et noms de famille d'une personne (ID) a avec délimiteur ;

Le tableau devrait ressembler à ceci à la fin:

 ID FIRSTNAME SURNAME FULLNAME OTHERNAMES ------------------------------------------------------------------------ 1 JOHN PETER JOHN PETER JOHN PETER 2 PETER JACKSON PETER JACKSON PETER JACKSON 3 JOHN PAUL JOHN PAUL JOHN PAUL;JOHN SECONDNAME 3 JOHN SECONDNAME JOHN SECONDNAME JOHN PAUL;JOHN SECONDNAME 

Cette design est awfull! Ne fais pas ça!

Juste pour l'exhaustivité:

 CREATE TABLE MockUp(ID INT ,FIRSTNAME VARCHAR(100) ,SURNAME VARCHAR(100) ,FullName AS FIRSTNAME + ' ' + SURNAME); INSERT INTO MockUp VALUES (1,'JOHN','PETER') ,(2,'PETER','JACKSON') ,(3,'JOHN','PAUL') ,(3,'JOHN','SECONDNAME'); SELECT ID ,FIRSTNAME ,SURNAME ,FullName ,STUFF((SELECT '; ' + x.FullName FROM MockUp AS x WHERE x.ID=m.ID FOR XML PATH(''),TYPE).value('text()[1]','nvarchar(max)'),1,2,'') AS OtherNames FROM MockUp AS m GO DROP TABLE MockUp; 

Vous voyez, que j'ai ajouté le FullName comme colonne calculée . Les autres noms sont calculés à la volée . Ne stockez pas de données computables si vous n'avez pas une très bonne raison!