SQL Server - Dynamischer Pivot
Ich brauche etwas Hilfe. Ich habe zwei Spalten, Ort und Name, ich möchte eine Anzahl von Namen für jeden Ort. Derzeit würden die Daten so aussehen:
Place | Name
100 OK
100 NEW
100 BAD
200 BAD
200 BAD
300 OK
400 OK
400 OK
400 OK
Ich versuche, es so aussehen zu lassen, aber ich würde ungefähr 20 Zeilen schwenken (weshalb ich möchte, dass die Benennung dynamisch ist
PLACE | OK | NEW | BAD
100 1 1 1
200 0 0 2
300 1 0 0
400 3 0 0
Aus einer ganzen Reihe anderer Fragen habe ich mir das ausgedacht, aber es funktioniert nicht. Jede Hilfe wäre sehr dankbar.
DECLARE @cols AS NVARCHAR(MAX);
DECLARE @query AS NVARCHAR(MAX);
SELECT @cols = STUFF((SELECT distinct
',' +
QUOTENAME(NAMES)
FROM INFO_TABLE with (nolock)
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'');
SET @query = ' SELECT PLACE , ' + @cols + '
FROM
(SELECT
CASE
WHEN NAME IS NOT NULL
THEN Count(NAME)
ELSE 0 END AS EXPR1,
PLACE
FROM INFO_TABLE with (nolock)) t
PIVOT
(
AVG(Expr1)
FOR NAME IN (' + @cols + ' )
)
p ' ;
Execute(@query);