2017-08-10 1 views
0

Hintergrund: Ich baue eine ziemlich einfache Tabelle, die einfach eine Auswahl * aus einer anderen Tabelle ist, die die letzte auswählen muss Daten von 3 Tagen, wenn es sich um einen Montag handelt, und Daten des letzten einen Tages, wenn es Dienstag-Freitag ist.Teradata - wenn ... dann ... abhängig vom Wochentag (verschiedenen Code ausführen)

Problem: Ich bin mir nicht sicher, ich verstehe, wie dies mit einer IF ... THEN-Anweisung zu tun.

-Code versucht:

IF DAY_OF_WEEK = 2 

    THEN 

     SELECT * FROM TABLE WHERE DATE BETWEEN CURRENT_DATE-3 AND CURRENT_DATE 

    ELSE 

     SELECT * FROM TABLE WHERE DATE BETWEEN CURRENT_DATE-1 AND CURRENT_DATE 

    END IF 

Diese eindeutig nicht funktioniert, sondern zeigt die Logik dessen, was ich zu tun versuche. Irgendwelche Gedanken darüber, wie ich das angehen könnte?

Antwort

0

Folgendes sollte erreichen, was Sie zu tun versuchen:

SELECT * 
    FROM TABLE 
WHERE DATE_COLUMN >= (SELECT CASE WHEN TD_DAY_OF_WEEK(CURRENT_DATE) = 2 
            THEN CURRENT_DATE - 3 
            ELSE CURRENT_DATE - 1 
           END) 
    AND DATE_COLUMN <= CURRENT_DATE; 
+1

Hallo @Rauben. Sehr ähnliche Lösung zu der oben genannten - sieht aus wie wir zur gleichen Zeit gebucht haben. Danke für Ihre Hilfe. –

Verwandte Themen