Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Pivot und Gruppierung funktioniert nicht (https://www.delphipraxis.net/136111-sql-pivot-und-gruppierung-funktioniert-nicht.html)

Overclocker 23. Jun 2009 18:38

Datenbank: SQL Server • Version: 2005 • Zugriff über: Direkt auf SQL Server mit einem Abfragefenster

SQL Pivot und Gruppierung funktioniert nicht
 
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!!!

mkinzler 23. Jun 2009 18:46

Re: SQL Pivot und Gruppierung funktioniert nicht
 
Wie es in der Fehlermeldung steht: feld in die Gruppierung aufnehmen oder in ein Aggregat verwandeln.

Overclocker 23. Jun 2009 18:47

Re: SQL Pivot und Gruppierung funktioniert nicht
 
ja wenn ich das mach, dann kommen die felder, welche in @columns definiert sind

und bis dann keine fehlermeldung mehr kommt, sieht das ergebnis genauso aus weil nix mehr gruppiert wird :((


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz