SQL Server でカンマ区切り文字を使用してグループ化された列の集計結果を取得する
SQL Server では、FOR XML PATH
構造を使用して、カンマ区切り文字とグループ化された列を含む集計結果を取得できます。次の例を考えてみましょう:
<code class="language-sql">SELECT ID, STUFF((SELECT ', ' + Value FROM YourTable t2 WHERE t1.ID = t2.ID FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS Values FROM YourTable t1 GROUP BY ID;</code>
このクエリ内:
FOR XML PATH
構造は、各グループの ID
列 (Value
列で表される) の値のカンマ区切りリストを生成します。 STUFF
この関数は、集計リストの先頭にある「,」を削除します。 .value('.', 'NVARCHAR(MAX)')
潜在的なエラーを回避するために、XML の結果を NVARCHAR(MAX) 型に変換します。 データ例と期待される結果:
ID | Value |
---|---|
1 | a |
1 | b |
2 | c |
期待される出力:
ID | Values |
---|---|
1 | a,b |
2 | c |
その他の例:
SQL Server でのグループ化と集計にカンマ区切りの結果を使用する方法の詳細については、次の例を検討してください。
この改訂された回答は、.value('.', 'NVARCHAR(MAX)')
を使用して XML 出力を文字列に明示的に変換することで SQL クエリを改善し、潜在的なエラーを防ぎます。
以上がSQL Server でカンマ区切り値を含む集計結果を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。