Hallo,
ich habe eine Tabelle mit Personendaten. Jede dieser Personen ist an potentiell beliebig vielen Projekten beteiligt. Ich habe eine Stored Procedure, die (bei gegebener Personen-ID) berechnet, an wievielen Projekten eine Person beteiligt ist. Jetzt möchte ich für eine Statistikfunktion eine Balkengrafik ausgeben lassen, wieviele Personen jeweils wie erfahren sind: Also einen Balken für alle, die bei keinem Projekt dabei sind, den nächsten Balken für alle mit 1 Projekt, dann mit 2 Projekten und so weiter... so viele Balken, bis irgendwann die höchste vorhandene Projektanzahl einer Person erreicht ist. Das Ganz aufgeschlüsselt nach Geschlecht (nicht wundern, ich habe noch ein drittes Geschlecht in der Tabelle, aber das ist ja egal).
Dazu habe ich folgenden Code:
<TT>
SELECT
(SELECT anzahl FROM
getprojektanzahl(t_persdaten.pers_id)) AS zaehler
,COUNT(*) AS gesamtzahl
,COUNT(CASE geschlecht WHEN 'M' THEN 1 ELSE NULL END) AS maenner
,COUNT(CASE geschlecht WHEN 'W' THEN 1 ELSE NULL END) AS frauen
,COUNT(CASE geschlecht WHEN 'I' THEN 1 ELSE NULL END) AS institutionen
FROM t_persdaten
GROUP BY zaehler
ORDER BY zaehler
</TT>
<BR>
Klappt aber leider nicht. COLUMN UNKNOWN: ZAEHLER, sagt er mir. Wenn ich, um vom Spaltennamen wegzukommen, stattdessen GROUP BY 1 ORDER BY 1 hinschreibe, heißt es:
<TT>Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).</TT>
Ich verstehe nur nicht warum. Alles ist entweder gegroupt oder in COUNT untergebracht. Wo liegt mein Denkfehler? Oder ist das ein Ding von FB, dass ich nicht nach einem Subselect GROUPen kann?
Ach ja, das AS weglassen und unten GROUP BY anzahl usw. zu schreiben, funktioniert auch nicht. COLUMN UNKNOWN.
Schon mal vielen Dank,
Stefan Balzter
ich habe eine Tabelle mit Personendaten. Jede dieser Personen ist an potentiell beliebig vielen Projekten beteiligt. Ich habe eine Stored Procedure, die (bei gegebener Personen-ID) berechnet, an wievielen Projekten eine Person beteiligt ist. Jetzt möchte ich für eine Statistikfunktion eine Balkengrafik ausgeben lassen, wieviele Personen jeweils wie erfahren sind: Also einen Balken für alle, die bei keinem Projekt dabei sind, den nächsten Balken für alle mit 1 Projekt, dann mit 2 Projekten und so weiter... so viele Balken, bis irgendwann die höchste vorhandene Projektanzahl einer Person erreicht ist. Das Ganz aufgeschlüsselt nach Geschlecht (nicht wundern, ich habe noch ein drittes Geschlecht in der Tabelle, aber das ist ja egal).
Dazu habe ich folgenden Code:
<TT>
SELECT
(SELECT anzahl FROM
getprojektanzahl(t_persdaten.pers_id)) AS zaehler
,COUNT(*) AS gesamtzahl
,COUNT(CASE geschlecht WHEN 'M' THEN 1 ELSE NULL END) AS maenner
,COUNT(CASE geschlecht WHEN 'W' THEN 1 ELSE NULL END) AS frauen
,COUNT(CASE geschlecht WHEN 'I' THEN 1 ELSE NULL END) AS institutionen
FROM t_persdaten
GROUP BY zaehler
ORDER BY zaehler
</TT>
<BR>
Klappt aber leider nicht. COLUMN UNKNOWN: ZAEHLER, sagt er mir. Wenn ich, um vom Spaltennamen wegzukommen, stattdessen GROUP BY 1 ORDER BY 1 hinschreibe, heißt es:
<TT>Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).</TT>
Ich verstehe nur nicht warum. Alles ist entweder gegroupt oder in COUNT untergebracht. Wo liegt mein Denkfehler? Oder ist das ein Ding von FB, dass ich nicht nach einem Subselect GROUPen kann?
Ach ja, das AS weglassen und unten GROUP BY anzahl usw. zu schreiben, funktioniert auch nicht. COLUMN UNKNOWN.
Schon mal vielen Dank,
Stefan Balzter
Comment