2x Count in SQL
Hallo ihr alle,
folgendes Problem:
Ich arbeite mit MS Access, kenne mich aber auch ganz gut in SQL aus. Meine jetzige Abfrage gruppiert eine Tabelle nach 3 Attributen und gibt mit COUNT die Anzahl der Datensätze aus, soweit kein Problem. Jetzt möchte ich in derselben Abfrage die Anzahl derer Datensätze haben, die noch eine zusätzliche Bedingung erfüllen (etwa < 20).
Jetzt könnte ich natürlich eine neue Abfrage bauen die genauso aussieht wie die Alte nur mit der zusätzlichen Bedingung und die beiden Joinen. Dann hätte ich aber auf einen Schlag 20-30 Abfragen mehr
Es geht bestimmt auch in derselben Abfrage oder?
Antwort schreiben
Natürlich geht das - und wenn wir die Bedingungen kennen würden, könnten wir vielleicht auch eine Lösung bieten.
Nenn doch mal deine bisherigen 2 SQL-Abfragen, was der Rechner ausspuckt und was er ausspucken sollte.
Gegebenenfalls wäre ein Beispiel nicht schlecht.
Gruß CA
Antwort 2 von MixMax vom 06.09.2019, 10:39 Options
evtl mit " ... HAVING (bedingungen)"
ansonsten schreibe einfach anstelle die Spalte zu selektieren einen vergleich mit der Spalte der dann Wahr oder Falsch ergibt und summiere das:
SELECT Count(ZE.Beginn) AS anzahlstarts, -1*sum(ZE.Ende > #19:00#) AS Endzeitennach19uhr FROM Zeiten;
Antwort 3 von Dooli vom 06.09.2019, 10:57 Options
Abfrage 1
SELECT VR, B, KUNDE_ID, Count(AUFTRAG_NUMMER) AS ANZAHL
FROM AUFTRÄGE
GROUP BY VR, B, KUNDE_ID;
Abfrage 2
SELECT VR, B, KUNDE_ID, Count(AUFTRAG_NUMMER) AS ANZAHL
FROM AUFTRÄGE
WHERE FORM="Aufwand"
GROUP BY VR, B, KUNDE_ID;
Antwort 4 von MixMax vom 06.09.2019, 12:38 Options
SELECT VR, B, KUNDE_ID, Count(AUFTRAG_NUMMER) AS ANZAHL, -1*sum(FORM="Aufwand")
FROM AUFTRÄGE
GROUP BY VR, B, KUNDE_ID;
Du hast eine Spalte mit dem namen FORM?
Antwort 5 von Dooli vom 08.09.2019, 17:43 Options
Scheint zu funktionieren, vielen Dank!
Antwort 6 von Dooli vom 10.09.2019, 08:57 Options
Eine Frage hätte ich noch:
Wie siehts aus wenn ich nicht die Anzahl der Datensätze, sondern die Summe eines Feldes bestimmen will? also:
Abfrage 1
SELECT VR, B, KUNDE_ID, Sum(Preis) AS Preis
FROM AUFTRÄGE
GROUP BY VR, B, KUNDE_ID;
Abfrage 2
SELECT VR, B, KUNDE_ID, Sum(Preis) AS Preis
FROM AUFTRÄGE
WHERE FORM="Aufwand"
GROUP BY VR, B, KUNDE_ID;