Einzelnen Beitrag anzeigen

Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#1

SQL Pivot und Gruppierung funktioniert nicht

  Alt 23. Jun 2009, 19:38
Datenbank: SQL Server • Version: 2005 • Zugriff über: Direkt auf SQL Server mit einem Abfragefenster
Hi,

folgendes Problem:

Folgender Query gibt mir diesen View aus:

SQL-Code:
DECLARE @columns VARCHAR(8000)

SELECT @columns = COALESCE(@columns + ',[' + cast(Berufsbezeichnung as varchar) + ']',
'[' + cast(Berufsbezeichnung as varchar)+ ']')
FROM Bewerbungskategorien INNER JOIN (Berufe INNER JOIN ZO_Beruf_Kategorie ON Berufe.id_Berufe = ZO_Beruf_Kategorie.Berufnr) ON Bewerbungskategorien.id_Kategorien = ZO_Beruf_Kategorie.Kategorienr
GROUP BY Berufsbezeichnung


DECLARE @query VARCHAR(8000)

SET @query = '
SELECT Kategorienr,Bewerbungsjahr,
'+@columns+'
FROM Bewerbungskategorien INNER JOIN (Berufe INNER JOIN ZO_Beruf_Kategorie ON Berufe.id_Berufe = ZO_Beruf_Kategorie.Berufnr) ON Bewerbungskategorien.id_Kategorien = ZO_Beruf_Kategorie.Kategorienr
PIVOT
(
MAX(Berufsbezeichnung)
FOR Berufsbezeichnung
IN (
' + @columns + ')
) as p
'


EXECUTE(@query)

SQL-Code:
Kategorienr Jahr Bürokaufmann Eurokaufmann/-frau Industriekaufmann/-frau Informatikkaufmann/-frau
2    2008/2009   NULL    Eurokaufmann/-frau NULL    NULL
3    2008/2009   NULL    NULL    Industriekaufmann/-frau NULL
3    2008/2009   Bürokaufmann/frau NULL    NULL    NULL
4    2008/2009   NULL    NULL    NULL    Informatikkaufmann/-frau

Jetzt möcht ich mir die Abfrage so anpassen, dass mir die Kategorienummern gruppiert werden, d. h. dass ich folgendes Ergebnis bekomme:

SQL-Code:
Kategorienr Jahr Bürokaufmann/frau Eurokaufmann/-frau Industriekaufmann/-frau Informatikkaufmann/-frau
2    2008/2009   NULL    Eurokaufmann/-frau NULL    NULL
3    2008/2009   Bürokaufmann/frau NULL    Industriekaufmann/-frau NULL
4    2008/2009   NULL    NULL    NULL    Informatikkaufmann/-frau

Wenn ich nach 'as p' noch "group by kategorienr ergänze, kommt folgender fehler:
Die 'p.Bewerbungsjahr'-Spalte ist in der Auswahlliste ungültig, da sie nicht in einer Aggregatfunktion und nicht in der GROUP BY-Klausel enthalten ist.


Wer weis wie ich das umgehen kann?

DANKE!!!
  Mit Zitat antworten Zitat