Please help me write a SQL query. I have a table Name with these columns and sample data:
ID FIRSTNAME SURNAME FULLNAME
---------------------------------------------------
1 JOHN PETER JOHN PETER
2 PETER JACKSON PETER JACKSON
3 JOHN PAUL JOHN PAUL
3 JOHN SECONDNAME JOHN SECONDNAME
Fullname is first name + space + last name and ID can repeat.
I want to add another column OTHERNAMES: it will CONCATENATE with ALL firstname and surnames of a person (ID) has with delimiter ;
Table should look like this in the end:
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
This design is awfull! Don't do that!
Just for completeness:
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;
You see, that I added the FullName as computed column. The OtherNames are calculated on-the-fly. Do not store computeable data if you do not have a very good reason!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With