mehrere case when verbinden

Nuggme

Benutzer
Beiträge
7
Hallo!

Ich hätte eine neue Frage:

Ich würde gerne ab einem bestimmten Datum wissen, welche Goodies wie oft verkauft wurden! Dazu habe ich eine Tabelle, in der steht in welchen Geschenkboxen welche Artikel wie oft in welchem Set vorkommen, zB so:

Set 123: A, B, 2xC
Set 345: 2xA
Set 456: 2xA, 2xC
Set 678: 2xC

Ich hätte gerne so eine Tabelle:
A B C
5 1 6

Ich frage das derzeit für jeden Artikel so ab:

SELECT sum(CASE Set_id
WHEN 123 THEN 1
WHEN 345 THEN 2
WHEN 456 THEN 2 else 0 END) as Artikel_A
FROM tabelleXY
where bon_datum > to_date('20161201000000','
yyyymmddhh24miss')

Für mehrere Artikel habe ich prinzipiell diesen Ansatz:

SELECT
CASE Set_id
WHEN 123 THEN 1
WHEN 345 THEN 2
WHEN 456 THEN 2 else 0 END as Artikel_A
CASE Set_id
WHEN 123 THEN 1 else 0 END as Artikel_B
CASE Set_id
WHEN 123 THEN 2
WHEN 456 THEN 2
WHEN 678 THEN 2 else 0 END as Artikel_C
FROM tabelleXY
where bon_datum > to_date('20161201000000','
yyyymmddhh24miss')

Wie könnte ich alle Artikel in einer Abfrage abfragen?

Ausserdem hätte ich noch folgende Frage:

Wenn ich mir das pro Kalenderwoche ausgeben lassen möchte, dann konvertiere ich das Datum in Kalenderwochen (iw). Gibt es eine Möglichkeit, einfach das aktuelle Datum (systimestamp) als 2te Grenze anzugeben? Also irgendwie so:

bon_datum between to_date('20161201000000','yyyymmddhh24miss')
and to_date(systimestamp,'yyyymmddhh24miss')
group by to_char(to_date(bon_datum), 'iw')
order by to_char(to_date(bon_datum), 'iw') desc

Vielen Dank :)

LG Nuggme
 
Werbung:
Hallo!

Ich hätte eine neue Frage:

Ich würde gerne ab einem bestimmten Datum wissen, welche Goodies wie oft verkauft wurden! Dazu habe ich eine Tabelle, in der steht in welchen Geschenkboxen welche Artikel wie oft in welchem Set vorkommen, zB so:

Set 123: A, B, 2xC
Set 345: 2xA
Set 456: 2xA, 2xC
Set 678: 2xC

Ich hätte gerne so eine Tabelle:
A B C
5 1 6

Ich frage das derzeit für jeden Artikel so ab:

SELECT sum(CASE Set_id
WHEN 123 THEN 1
WHEN 345 THEN 2
WHEN 456 THEN 2 else 0 END) as Artikel_A
FROM tabelleXY
where bon_datum > to_date('20161201000000','
yyyymmddhh24miss')


Das paßt alles nicht zusammen. Du speicherst da einen String, der z.B. "2xA, 2xC" enthält? Ganz, ganz schlechtes Tabellendesign. Deine Abfrage wiederum ist starr, da steckt in der Abfrage ja schon die Zuordnung, in welchen Set wie oft was drinne ist. Das skaliert überhaupt nicht.

Mein Tipp: wirf das weg und beschäftige Dich erst einmal mit Normalisierung.
 
Zurück
Oben