Gruppierungen / Zählen / Summieren
kat
- datenbank
0 King^Lully0 kat0 King^Lully0 kat
0 Ilja0 kat
Hi Zusammen,
ich habe gerade ein Brett vor'm Kopf. ;-)
Ich habe zwei Tabellen,
Pos:
No|Header_No|GroupNo|Date
01|1 |x |01.01.2007
02|2 |y |05.01.2007
03|2 |y |07.02.2007
04|3 |z |08.01.2007
05|3 |z |08.01.2007
Header:
Ich möchte alle B_No zu GroupNo gruppiert, nur wenn das Datum unterschiedlich ist, wenn es für alle Positionen gleich ist, sollen diese nicht mitgezählt werden werden.
gewünschtes Ergebnis:
GroupNo | Count(DISTINCT B_No)
y | 2
Ich schreibe mal extra nicht meine lösung hier auf.
Problem in der WHERE-Klausel kann man keine Count-Abfrage auf eine Gruppierung machen. Wie bekomme ich diese Daten rausgefiltert?
Ich schreibe mal extra nicht meine lösung hier auf.
Erste Idee: Ein SELECT DISTINCT auf spezielle Datenfelder kombiniert mit der Aggregatfunktion COUNT und einem "angemessenen" GROUP BY.
Dann habe ich alle, wie zähle ich die Positionen nicht mit, bei denen das Datum für die Gruppierung immer gleich ist. Ich möchte das sie wegfallen.
WHERE COUNT(DISTINCT Date) > 1 im Prinzip, wenn's denn gehen würde
Ich schreibe mal extra nicht meine lösung hier auf.
Erste Idee: Ein SELECT DISTINCT auf spezielle Datenfelder kombiniert mit der Aggregatfunktion COUNT und einem "angemessenen" GROUP BY.
Dann habe ich alle, wie zähle ich die Positionen nicht mit, bei denen das Datum für die Gruppierung immer gleich ist. Ich möchte das sie wegfallen.
Wenn Du bspw. auf
04|3 |z |08.01.2007
05|3 |z |08.01.2007
mit einem SELECT DISTINCT DF2,DF3,DF4 gehst, kriegst Du natürlich nicht alle Datensätze, sondern nur einen einzigen.
siehe ilja - having ist die lösung
ich will auch nicht einen einzigen, ich will keinen dann
yo,
Problem in der WHERE-Klausel kann man keine Count-Abfrage auf eine Gruppierung machen. Wie bekomme ich diese Daten rausgefiltert?
SELECT GroupNo, Count(*)
FROM tabelle
GROUP BY GroupNo
HAVING COUNT(DISTINCT date) > 1
Ilja
yo,
Problem in der WHERE-Klausel kann man keine Count-Abfrage auf eine Gruppierung machen. Wie bekomme ich diese Daten rausgefiltert?
SELECT GroupNo, Count(*)
FROM tabelle
GROUP BY GroupNo
HAVING COUNT(DISTINCT date) > 1Ilja
DANKE
... ich wusste doch, da war noch was ...
lol