2017-05-25
zelder
2017-06-01
25/05
2017

Конкатенация данных в запросе по привязанной таблице

Ситуация
Идет запрос в базу и происходит множественная выборка результатов

Задача
К каждому результату подцепить поле-результат, с перечислением из связанных таблиц

Решение (в XML)

Формат вывода:
<Entity><Id>1</Id><Name>Vasa</Name></Entity><Entity><Id>2</Id><Name>Peta</Name></Entity>

SELECT
T.[ID], (
SELECT OT.[ID], OT.[Name] AS Name
FROM tOtherTable OT
WHERE T.[ID] = OT.[Ref_ID]
ORDER BY OT.[SortOrder]
FOR XML PATH('Entity')
)
FROM tMainTable T


Решение (свой формат)

Формат вывода: 
1:Vasa;2:Peta


SELECT
T.[ID], STUFF((
SELECT ';' + CAST(OT.[ID] AS VARCHAR(36)) + ':' + OT.[Name]
FROM tOtherTable OT
WHERE T.[ID] = OT.[Ref_ID]
ORDER BY OT.[SortOrder]
FOR XML PATH('')
), 1, 1, '')
FROM tMainTable T




.