SQL-Abfrage - 2 mal COUNT auf gleiche Spalte einer Tabelle.
Hallo,
Ich habe folgendes Problem.
Ich habe die Tabelle "Lieferscheine" in der Datenbank.
Nun soll herausgefunden welcher Lieferant, wie viele Lieferscheine hat.
Sinngemäß:
__________________
Select lieferant, count(*)
from lieferscheine
where lieferant in (1,2,3,4,5)
group by lieferant
___________________
Zugleich soll herausgefunden welche Lieferscheine bei den jeweiligen Lieferanten noch offen sind.
Sinngemäß:
______________________
Select lieferant, count(*)
from lieferscheine
where lieferant in (1,2,3,4,5)
and status = 1
group by lieferant
_______________________
Nun sollen die beiden Abfragen zusamengeführt werden, dass die Ausgabe so aussieht
Lieferant |LS_komplett |LS_offen
1 |2131 |1001
2 |1234 |700
3 |3429 |100
4 |21241 |5000
Gibt es eine Möglichkeit, dies zu realisieren?
Im Voraus schon mal besten Dank für Eure Hilfe.
mfg
JosefSepp
Ich habe folgendes Problem.
Ich habe die Tabelle "Lieferscheine" in der Datenbank.
Nun soll herausgefunden welcher Lieferant, wie viele Lieferscheine hat.
Sinngemäß:
__________________
Select lieferant, count(*)
from lieferscheine
where lieferant in (1,2,3,4,5)
group by lieferant
___________________
Zugleich soll herausgefunden welche Lieferscheine bei den jeweiligen Lieferanten noch offen sind.
Sinngemäß:
______________________
Select lieferant, count(*)
from lieferscheine
where lieferant in (1,2,3,4,5)
and status = 1
group by lieferant
_______________________
Nun sollen die beiden Abfragen zusamengeführt werden, dass die Ausgabe so aussieht
Lieferant |LS_komplett |LS_offen
1 |2131 |1001
2 |1234 |700
3 |3429 |100
4 |21241 |5000
Gibt es eine Möglichkeit, dies zu realisieren?
Im Voraus schon mal besten Dank für Eure Hilfe.
mfg
JosefSepp
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 170513
Url: https://administrator.de/forum/sql-abfrage-2-mal-count-auf-gleiche-spalte-einer-tabelle-170513.html
Ausgedruckt am: 25.12.2024 um 03:12 Uhr
3 Kommentare
Neuester Kommentar
Die einfache Lösung wäre:
Die beiden Statements oben als View bauen und dann eine View, die die beiden über einen Join zusammennimmt.
Wenn man es als einzelnes Select Statement haben will, es sollte auch sowas gehen (ungetestet):
Im Moment werden damit nur Lieferanten gefunden, die auch offene Posten haben, muß man halt den Inner Join in ein Outer Join umwandeln, aber da weiß ich die Syntax gerade nicht auswendig.
Die beiden Statements oben als View bauen und dann eine View, die die beiden über einen Join zusammennimmt.
Wenn man es als einzelnes Select Statement haben will, es sollte auch sowas gehen (ungetestet):
Select t1.Lieferant, t1.Komplett, t2.Offen
from
(Select lieferant, count(*) as komplett from lieferscheine where lieferant in (1,2,3,4,5) group by lieferant) as t1,
(Select lieferant, count(*) as offenfrom lieferscheine where lieferant in (1,2,3,4,5) and status=1 group by lieferant) as t2
where t1.Lieferant=t2.Lieferant