Sub Query

smp4000

Neuer Benutzer
Beiträge
4
Hallo zusammen,

ich hab ein Problem vielleicht kann mir jemand weiterhelfen.
ich hab mehrere Abfragen die einzeln funktionieren, ich will die aber in einer Tabelle Nebeneinander haben.
mein SQL sieht so aus

SELECT datum as tag, sum(menge) from tbl_verkdaten where artgruppe in(15,35)
union all
SELECT datum as tag, sum(preis) from tbl_verkddaten where artgruppe in(15,45)
group by tag
having tag between '2018-08-01'and '2018-08-31'

ich möchte die Daten Nebeneinander haben etwa so
Datum | Wert 1 | Wert 2
01.08.2018 550,00 | 2500
 
Werbung:
Hallo akretschmer
ich hab eine Tabelle da sind Umsatzdaten drin mit Preis, Menge, Bezeichnung und Artikelgruppe (Artikelgruppe sind zahlen)
Jetzt will ich für einen Monat die Daten zusammenfassen

Datum | Summe Menge für Artikelgruppe (1,2,3,4) | Summe Menge für Artikelgruppe (4,5,6,7) | Summe Menge für Artikelgruppe (8,9,10,11 | usw
Also mehrere einzel abfragen in einer Tabelle nebeneinander
 
ich hab eine Tabelle da sind Umsatzdaten drin mit Preis, Menge, Bezeichnung und Artikelgruppe (Artikelgruppe sind zahlen)
Jetzt will ich für einen Monat die Daten zusammenfassen

Datum | Summe Menge für Artikelgruppe (1,2,3,4) | Summe Menge für Artikelgruppe (4,5,6,7) | Summe Menge für Artikelgruppe (8,9,10,11 | usw

Das geht nicht, da Deine Tabelle kein Datum enthält (gemäß Deiner Beschreibung).

Code:
test=*# select * from smp4000 ;
   datum    | artikel | menge
------------+---------+-------
 2018-08-01 |       1 |     5
 2018-08-01 |       2 |     5
 2018-08-02 |       7 |     3
 2018-08-03 |       4 |     1
(4 Zeilen)

test=*# select                 
  datum
  , sum(menge) filter (where artikel in (1,2,3,4,5)) as artikel_1_5
  , sum(case when artikel in (6,7,8,9,10) then menge else 0 end) as artikel_6_10
from smp4000
group by datum
order by datum
;
   datum    | artikel_1_5 | artikel_6_10
------------+-------------+--------------
 2018-08-01 |          10 |            0
 2018-08-02 |             |            3
 2018-08-03 |           1 |            0
(3 Zeilen)

test=*#
 
Nunja FILTER wird er nicht können also
Code:
select                 
  datum
  , sum(case when artikel in (1,2,3,4,5)) then menge else 0 end) as menge,
  , sum(case when artikel in (6,7,8,9,10) then preis else 0 end) as preis
from tabelle
group by datum
order by datum
 
Werbung:
Zurück
Oben