2016-03-23 10 views
0
select * 
from DBNAME.dbo.Shell_V36 V 
inner join 
DBNAME.DBO.Promo P 
on 
Case 
when 
(V.Product = P.From_Product_Code) 
And (V.cur_date >= P.Promo_end_date) 
or (V.cur_date <= P.Promo_start_date) 
then (P.To_Product_Code) 
else(P.From_Product_Code) 
end 

i "bir koşul, yakın 'end' beklenen bir bağlamda belirtilen olmayan Boole tür bir ifadeyi." alıyorum Lütfen biri bana yardım edebilir mi.Bir koşulun beklendiği bir bağlamda belirtilen "bobin" olmayan boole tipi bir ifade. Hata

+0

bir koşul beklenen bir bağlamda belirtilen olmayan Boole Çeşidi [Bir ifadenin Tekrarlama olabilir, yakınındaki 'SON'] (http://stackoverflow.com/questions/3018549/an-expression-of-non-boolean-type-specified-in-a-context-where-a-condition-is-ex) –

+0

I bunun bir kopya olduğunu düşünmeyin - aynı soru unvanına sahiptir, ancak soru özellikleri ve cevap farklıdır – David

cevap

1

Sen JOIN operasyonun ON maddesi olarak kullanılan Shell_V36 tablodan alan sağlamak zorunda:

select * 
from DBNAME.dbo.Shell_V36 V 
inner join DBNAME.DBO.Promo P 
on Case when 
      (V.Product = P.From_Product_Code) And 
      (V.cur_date >= P.Promo_end_date) 
      or 
      (V.cur_date <= P.Promo_start_date) 
     then (P.To_Product_Code) 
     else (P.From_Product_Code) 
    End = V.code -- presumably code field should be used 
İlgili konular