2017-08-10 3 views
0

Contexte: Je construis une table assez simple qui est simplement un select * d'une autre table qui doit sélectionner la dernière 3 jours de données si c'est un lundi et le dernier jour de données si c'est mardi-vendredi.Teradata - si ... alors ... en fonction du jour de la semaine (exécuter un code différent)

Problème: Je ne suis pas sûr de comprendre comment faire cela en utilisant une instruction IF ... THEN.

code tenté:

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 

Cela ne fonctionne pas bien, mais démontre la logique de ce que je suis en train de faire. Des pensées sur comment je pourrais aborder cela?

Répondre

0

Ce qui suit devrait accomplir ce que vous essayez de faire:

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

Salut @Rob. Solution très similaire à celle ci-dessus - ressemble à ce que nous avons posté en même temps. Merci quand même pour vôtre aide. –