Мне нужно выполнить операцию конкатенации строк на SQL сервере для тех строк, которые все имеют одинаковый Master_ID. Кроме того, полученный порядок вывода основан на Seq_No Column
.
Поскольку я использую старую версию SQL Server, я не могу использовать функцию STRING_AGG()
.
Как на данный момент я использую функции Stuff and XML PATH
для объединения строк, но я не могу упорядочить полученные данные на основе сценария Seq_No Column
.
Table:
DECLARE @T TABLE (Master_ID INT,
Associated_ID INT,
Class_ID INT,
Code VARCHAR(20),SEQ_No INT)
Insert into @T VALUES(1297232,NULL,3619202, '1101' ,1)
Insert into @T VALUES(1297232,NULL,3619202, '0813' ,2)
Insert into @T VALUES(1297232,NULL,3619202, '170219' ,3)
Insert into @T VALUES(1297232,NULL,3619202, '19053299',1)
Insert into @T VALUES(1297232,1297233,3619202,'1101' ,1)
Insert into @T VALUES(1297232,1297233,3619202,'0813' ,2)
Insert into @T VALUES(1297232,1297233,3619202,'170219' ,3)
Insert into @T VALUES(1297232,1297233,3619202,'19053299' ,1)
Insert into @T VALUES(1297232,1297234,3619202,'1101' ,1)
Insert into @T VALUES(1297232,1297234,3619202,'0813' ,2)
Insert into @T VALUES(1297232,1297234,3619202,'170219' ,3)
Insert into @T VALUES(1297232,1297234,3619202,'19053299' ,1)
Insert into @T VALUES(1297232,1297235,3619202,'1101' ,1)
Insert into @T VALUES(1297232,1297235,3619202,'0813' ,2)
Insert into @T VALUES(1297232,1297235,3619202,'170219' ,3)
Insert into @T VALUES(1297232,1297235,3619202,'19053299' ,1)
SELECT * FROM @T
Запрос, который я пробовал с ошибкой:
SELECT STUFF((SELECT DISTINCT' ,'+Code
FROM @T
ORDER by ISNULL(Associated_ID,Master_ID),SEQ_No -- Reason for Error
FOR XML PATH (''),TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '')
Вывод для приведенного выше кода:
0813 ,1101 ,170219 ,19053299
Ожидаемый результат:
1101,19053299,0813,170219