CASE w WHERE

0

Witam,
Mam następujący kod:

 SELECT DISTINCT
 ProduktReklamowy
, nazwasystemu
FROM Fact.Table
WHERE ProduktReklamowy IS NOT NULL 
AND (nazwasystemu = 0 
OR (nazwasystemu = 1 
AND ProduktReklamowy LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%' 
AND ProduktReklamowy NOT LIKE Concat(Right(YEAR(GetDate()),2), Left(Convert(Varchar(2),GetDate(),10),2),'1234')))

Chciałbym aby ostatni warunek był sprawdzany tylko wówczas jeśli Day(GetDate())>25. Czy ktoś może wie w jaki sposób dodać takie ograniczenie?
Pozdrawiam

0
SELECT DISTINCT
 ProduktReklamowy
, nazwasystemu
FROM Fact.Table
WHERE ProduktReklamowy IS NOT NULL 
AND (nazwasystemu = 0 
OR (nazwasystemu = 1 
AND ProduktReklamowy LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%' 
AND 
1 = CASE
WHEN  Day(GetDate())>25 AND ProduktReklamowy NOT LIKE Concat(Right(YEAR(GetDate()),2), Left(Convert(Varchar(2),GetDate(),10),2),'1234')) THEN
   1
WHEN Day(GetDate())<=25 THEN 
    1
ELSE
     2
END )
0
AND ProduktReklamowy NOT LIKE 
CASE WHEN  Day(GetDate())>25 
THEN  Concat(Right(YEAR(GetDate()),2), Left(Convert(Varchar(2),GetDate(),10),2),'1234')))
ELSE '' END

Zerknij na coś w ten deseń

0

Wykorzystałem kod MateuszDevVideo ale dzięki również za odpowiedź Necronus. Pozdrawiam

0

Polecam się na przyszłość :)

0

Tak tylko uzupełnie, ze to nie wymaga CASE:

 SELECT DISTINCT 
    ProduktReklamowy,
    nazwasystemu
FROM 
    Fact.Table
WHERE 
    ProduktReklamowy IS NOT NULL
    AND nazwasystemu in (0,1)
    AND ProduktReklamowy LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%'
    AND (
            (
            Day(GetDate())>25
            AND ProduktReklamowy NOT LIKE Concat(Right(YEAR(GetDate()),2), Left(Convert(Varchar(2),GetDate(),10),2),'1234')
            )
        OR 
            Day(GetDate())<26
        )
0

Dziękuję za istotne uzupełnienie! Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0