異なる行の文字列を1つの行に集約する方法を見つけています。私はさまざまな場所でこれを行うことを考えているので、これを容易にする機能があると便利です。私が使用して解決策を試してみたCOALESCE
とFOR XML
、彼らはちょうど私のためにそれをカットしないでください。
文字列の集約は次のようになります。
id | Name Result: id | Names
-- - ---- -- - -----
1 | Matt 1 | Matt, Rocks
1 | Rocks 2 | Stylus
2 | Stylus
私は見ました CLR定義の集約関数の代替としてのCOALESCE
とFOR XML
、どうやらSQL Azureが ありません、私はそれを使用することができるということの全体の多くを解決するだろう知っているので、私にとっては苦痛であるCLR-定義されたものを、サポート私にとっての問題。
すべての可能な回避策はありますか(CLRとして最適とはならないかもしれないが、同様に最適な方法ちょっと私は私のものを集約するために使用できることを、私は私が得ることができるもの取りますよ)?
for xml
、クエリのパフォーマンス(クエリの大部分!)に関してそれぞれ25%の使用率が示されています
for xml path
クエリを実行する方法はいくつかあります。他よりも速いものもあります。それはあなたのデータに依存する可能性がありますが、使用しているものdistinct
は私の経験ではを使用するよりも遅いですgroup by
。.value('.', nvarchar(max))
連結値を取得するために使用している場合は、次のように変更する必要があります.value('./text()[1]', nvarchar(max))
for xml
うまくいきませんか?