Supportnet / Forum / Datenbanken
2x Count in SQL
Frage
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 1 von ChatAlligator
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
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
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:
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
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;
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
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
Scheint zu funktionieren, vielen Dank!
Antwort 6 von Dooli
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;
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;

