SELECT *
FROM ThisTable
OUTER APPLY (SELECT (SELECT SomeField + ' ' AS [data()]
FROM SomeTable
WHERE SomeTable.ID = ThisTable.ID
FOR XML PATH ('')) AS ConcatenatedSomeField) A
しばしば、ただ一つではなく、このテーブルから複数の連結された連結フィールドを得たいと思う。私は論理的にこれを行うことができます:
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
しかし、何かが更新される必要があるときは、また、SomeTableはしばしばジョインされたテーブルの長いリストであるため、同じテーブルを何度も何度も繰り返してもパフォーマンスに影響を与える可能性があります。
これを行う良い方法はありますか?
ありがとう。
良いアイデアだが性能が良くないhttp://dba.stackexchange.com/q/125771/3690 –