在预期条件的上下文中指定的非布尔类型的表达式,接近'结束'。错误

时间:2016-03-23 18:08:59

标签: sql-server sql-server-2008

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 

我得到&#34;在预期条件的上下文中指定的非布尔类型的表达式,接近&#39; end&#39;。&#34;任何人都可以帮助我。

1 个答案:

答案 0 :(得分:1)

您必须提供Shell_V36操作的ON子句中使用的JOIN表中的字段:

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