次のようなemployees
のテーブルがあるとします。
Name Sex Role
Bob M Developer
Joe M QA
今、私はこのテーブルの重複する行に問題があります。いつか直しますが、問題ありません。私が現在必要としているのは、そのようなテーブルをクエリするものです:
Name Sex Role
Bob M Developer
Bob M Janitor
Joe M QA
Joe M CEO
そして、次の行を出力します:
Name Role
Bob Developer, Janitor
Joe QA, CEO
「役割」が別々の列に分割されるか、複数の値を持つ単一の列になるかは、私には関係ありません。
必要に応じてSQL Server 2008を使用する。
MySQLのようなGroup_concatは、SQL Server 2016までのSQL Serverでは使用できません。vNextでは STRING_AGG
ただし、同等の機能を提供します。
ただし、いくつかの手動オプションがあります。
現在のケースの解決策(SOからBradの回答を受け取り、テーブル用にカスタマイズした)は次のようになります。
SELECT name, LEFT(roles , LEN(roles )-1) AS roles
FROM employee AS extern
CROSS APPLY
(
SELECT role + ','
FROM employee AS intern
WHERE extern.name = intern.name
FOR XML PATH('')
) pre_trimmed (roles)
GROUP BY name, roles;
これらの詳細は、さまざまなソースから収集されます。