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!