Ergebnis 1 bis 3 von 3

Thema: Menge ermitteln

  1. #1
    SIJ
    SIJ ist offline Neuer Benutzer
    Registriert seit
    26.11.2008
    Ort
    Köln
    Beiträge
    15

    Standard Menge ermitteln

    Hallo,

    Es gibt eine Tabelle „Artikel“:
    Code:
    Id | Artikel_ID | 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
    Ich möchte mit eine SQL Abfrage die Menge mit dem Status ‚A’ und die Menge mit Status B ermitteln.
    Zum Beispiel:
    Code:
    Artikel_ID | Menge mit Status A | Menge mit Status B
    21                  7                                5 
    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

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von SIJ Beitrag anzeigen
    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:
    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
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    SIJ
    SIJ ist offline Neuer Benutzer
    Registriert seit
    26.11.2008
    Ort
    Köln
    Beiträge
    15

    Standard

    Danke Andreas.

    Igor

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum