Io uso spesso domande come:Concatenazione di righe con FOR XML, ma con più colonne?
SELECT *
FROM ThisTable
OUTER APPLY (SELECT (SELECT SomeField + ' ' AS [data()]
FROM SomeTable
WHERE SomeTable.ID = ThisTable.ID
FOR XML PATH ('')) AS ConcatenatedSomeField) A
spesso mi voglio ottenere più campi concatenati concatenati da questa tabella, invece di uno solo. Ho potuto logicamente fare questo:
SELECT *
FROM ThisTable
OUTER APPLY (SELECT (SELECT SomeField + ' ' AS [data()]
FROM SomeTable
WHERE SomeTable.ID = ThisTable.ID
FOR XML PATH ('')) AS ConcatenatedSomeField) A
OUTER APPLY (SELECT (SELECT SomeField2 + ' ' AS [data()]
FROM SomeTable
WHERE SomeTable.ID = ThisTable.ID
FOR XML PATH ('')) AS ConcatenatedSomeField2) B
OUTER APPLY (SELECT (SELECT SomeField3 + ' ' AS [data()]
FROM SomeTable
WHERE SomeTable.ID = ThisTable.ID
FOR XML PATH ('')) AS ConcatenatedSomeField3) C
ma sembra scadente e soggetto a errori quando qualcosa deve essere aggiornato; anche SomeTable è spesso una lunga lista di tabelle unite, quindi potrebbe avere anche implicazioni sul rendimento ottenendo ripetutamente le stesse tabelle.
C'è un modo migliore per farlo?
Grazie.
Bella idea ma le prestazioni non sono buone http://dba.stackexchange.com/q/125771/3690 –