sqlserver2008 の SQL ステートメントの作成に問題があります。次のデータがあります。
city person priority
-----------------------------------
Linz Mike 1
Wien Mike 1
Linz Tom 1
Wien Tom 1
Linz John 1
Linz Sarah 2
つまり、マイクとトムは優先度 1 でリンツとウィーンの都市を選択します。
ジョンは優先度 1 でリンツを選択します。
サラは優先度 2 でリンツを選択します。
今、私は次の出力が欲しいです:
cities persons priority
-----------------------------------
Linz, Wien Mike, Tom 1
Linz John 1
Linz Sarah 2
私はすでに次の SQL ステートメントを持っていますが、このクエリはJohnが優先度 1のWienのエントリも持っていることを示しているため、期待した結果が得られません。
SELECT
(SELECT
STUFF((SELECT ', ' + d.City
FROM (SELECT DISTINCT d2.City FROM dbo.DummyTable d2
WHERE d2.Priority = d1.Priority) d
FOR XML PATH('')), 1, 2, '')
)
AS Cities,
(SELECT
STUFF((SELECT ', ' + d.Person
FROM (SELECT DISTINCT d2.Person FROM dbo.DummyTable d2
WHERE d2.Priority = d1.Priority) d
FOR XML PATH('')), 1, 2, '')
)
AS Persons,
d1.Priority
FROM
dbo.DummyTable d1
GROUP BY d1.Priority
このクエリを SQL でどのように記述できるかについてのアイデアはありますか?