SELECT  a.*,b.name  from  chanpin  as  a,customer  as  b    
where    a.jianyan_riqi<=getdate()  and  **************************************************************************  
大家给看看下面这段sql(case  when  )可以嵌到  这吗,另外我的sql语法有问题吗  
我现在对这sql有点乱,谢谢大家帮忙指点一下!!!!!!!!!!!  
-------------------------------------------------------------  
 
case  when  datediff(yy,getdate(),a.shengcan_riqi)>12  then    
'datediff(dd,getdate(),DATEADD(yy,  3,  a.jianyan_riqi))>15"'  
else  
'datediff(dd,getdate(),DATEADD(yy,  4,  a.jianyan_riqi))>15'  
end  as  Category            //这个Category是我随便写的对吗  
 
------------------------------------------------------------  
*************************************************************************
order  by  bianhao

解决方案 »

  1.   

    where 中不可能定义别名,and 后应该得到逻辑值,你是字符串,显然错了
      

  2.   

    SELECT  a.*,b.name  from  chanpin  as  a,customer  as  b    
    where    a.jianyan_riqi<=getdate()  and  case  when  datediff(yy,getdate(),a.shengcan_riqi)>12  then    
    datediff(dd,getdate(),DATEADD(yy,  3,  a.jianyan_riqi))>15  
    else  datediff(dd,getdate(),DATEADD(yy,  4,  a.jianyan_riqi))>15  
    end  AND  關聯條件
    還少了兩個表得關聯條件  
      

  3.   

    是不是想这样?
    (case  when  datediff(yy,getdate(),a.shengcan_riqi)>12  then    
    datediff(dd,getdate(),DATEADD(yy,  3,  a.jianyan_riqi))
    else  
    datediff(dd,getdate(),DATEADD(yy,  4,  a.jianyan_riqi)) 
    end) >15
      

  4.   

    SELECT  a.*, b.name from chanpin as a,customer as b    
    where a.jianyan_riqi <= getdate() and  
    case when datediff(yy, getdate(), a.shengcan_riqi) > 12 
    then datediff(dd, getdate(), DATEADD(yy, 3, a.jianyan_riqi))  
    else  
    datediff(dd,getdate(), DATEADD(yy, 4, a.jianyan_riqi)) 
    end  > 15              //case 返回的是值  
     order  by  bianhao