Menge ermitteln

Fragen und Probleme rund um die Abfragespache SQL.
Antworten
SIJ
Neuer Benutzer
Beiträge: 15
Registriert: Mi 26. Nov 2008, 09:29
Wohnort: Köln

Menge ermitteln

Beitrag von SIJ » Di 8. Dez 2009, 10:09

Hallo,

Es gibt eine Tabelle „Artikel“:

Code: Alles auswählen

[font=Times New Roman][size=100]Id | Artikel_ID | Menge | Status[/size][/font]
[font=Times New Roman][size=100]1     21                5              A[/size][/font]
[font=Times New Roman][size=100]2     22                3              A[/size][/font]
[font=Times New Roman][size=100]3     21                4              B[/size][/font]
[font=Times New Roman][size=100]4     21                2              A[/size][/font]
[font=Times New Roman][size=100]5     21                3              C[/size][/font]
[font=Times New Roman][size=100]6     21                1              B[/size][/font]
 

Ich möchte mit eine SQL Abfrage die Menge mit dem Status ‚A’ und die Menge mit Status B ermitteln.
Zum Beispiel:

Code: Alles auswählen

[font=Times New Roman][size=100]Artikel_ID | Menge mit Status A | Menge mit Status B[/size][/font]
[size=100][font=Times New Roman]21                  7                                5 [/font][/size]


Ich weiß, dass ich das mit zwei SQL Abfragen machen kann.

Select Artikel_ID, SUM(Menge) FROM „Artikel“
WHERE „Artikel_ID“ = ‘21’ AND „Status“ = ‘A’
Group By „Artikel_ID“

Select Artikel_ID, SUM(Menge) FROM „Artikel“
WHERE „Artikel_ID“ = ‘21’ AND „Status“ = ‘B’
Group By „Artikel_ID“


Die Frage ist, ob ich das in eine SQL Abfrage einpacken kann.

Danke in voraus.

Igor

akretschmer
Erfahrener Benutzer
Beiträge: 7565
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Beitrag von akretschmer » Di 8. Dez 2009, 10:21

SIJ hat geschrieben:Die Frage ist, ob ich das in eine SQL Abfrage einpacken kann.



Kurze Antwort: ja.
längere Antwort: das habe ich gestern Abend erst in einer ähnlichen Anwendung gezeigt.

Bitte: anstatt Formatierung mit Schriftarten lieber Copy&Paste-fähige Tabellendefinition und Insert-Befehle für Beispieldaten zeigen.

ganz lange Antwort:

Code: Alles auswählen

test=*# select * from mengen ;
 id | artikel | menge | status
----+---------+-------+--------
  1 | 21      |     5 | a
  2 | 22      |     3 | a
  3 | 21      |     4 | b
  4 | 21      |     2 | a
  5 | 21      |     3 | c
  6 | 21      |     1 | b
(6 rows)

test=*# select artikel, sum(case when status='a' then menge else 0 end) as "Menge A", sum(case when status='b' then menge else 0 end) as "Menge B" from mengen where artikel = '21' group by 1;
 artikel | Menge A | Menge B
---------+---------+---------
 21      |       7 |       5
(1 row)


Btw.: ich zeige dies so ca. 3-4 mal pro Monat ...


Andreas
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

SIJ
Neuer Benutzer
Beiträge: 15
Registriert: Mi 26. Nov 2008, 09:29
Wohnort: Köln

Beitrag von SIJ » Di 8. Dez 2009, 11:30

Danke Andreas.

Igor

Antworten