Ho un problema durante la creazione di un'istruzione SQL per sqlserver2008. Ho i seguenti dati:Istruzione SQL per due colonne di gruppo
city person priority
-----------------------------------
Linz Mike 1
Wien Mike 1
Linz Tom 1
Wien Tom 1
Linz John 1
Linz Sarah 2
Ciò significa che le persone Mike e Tom scelgono le città Linz e Wien con priorità 1.
John sceglie Linz con priorità 1.
Sarah sceglie Linz con priorità 2.
ora voglio il seguente output:
cities persons priority
-----------------------------------
Linz, Wien Mike, Tom 1
Linz John 1
Linz Sarah 2
ho già seguito SQL-affermazione, ma non ottengo il risultato atteso da questa query direbbe che John ha anche una voce per Wien con priorità 1.
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
È anche possibile utilizzare questo SQL Fiddle
Qualche idea su come questa query possa essere scritta in SQL?