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