Sıklıkla şu sorguları kullanırım:XML ile birlikte satır birleştirmesi, ancak birden çok sütun ile?
SELECT *
FROM ThisTable
OUTER APPLY (SELECT (SELECT SomeField + ' ' AS [data()]
FROM SomeTable
WHERE SomeTable.ID = ThisTable.ID
FOR XML PATH ('')) AS ConcatenatedSomeField) A
Genellikle tek bir tablo yerine, bu tablodan birleştirilmiş birleştirilmiş birleştirilmiş alanlar almak istiyorum. Bunu mantıklı bir şekilde yapabilirim:
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
Ancak, herhangi bir şey güncellenmesi gerektiğinde berbat ve hataya eğilimli görünüyor; Ayrıca, SomeTable genellikle birleşik tabloların uzun bir listesidir, bu nedenle aynı tabloları tekrar tekrar elde etmek için performans sonuçları da olabilir.
Bunu yapmanın daha iyi bir yolu var mı?
Teşekkürler.
Güzel bir fikir ama performans iyi değil http://dba.stackexchange.com/q/125771/3690 –