Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

mehrere case when verbinden

Dieses Thema im Forum "Oracle" wurde erstellt von Nuggme, 25 Dezember 2016.

  1. Nuggme

    Nuggme Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru


    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.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden