case 在where后面的用法

CASE WHEN T.DCCD='0' THEN '' WHEN T.DCCD='1' THEN (convert(varchar,(SELECT COUNT(*) FROM CB_GZDJ WHERE  (DJH IN (T.DJH,T.CTDJH) OR CTDJH IN (T.DJH,T.CTDJH))AND CBLX IN('010','020') ))+'/'+convert(varchar,(SELECT COUNT(*) FROM CB_GZDJ WHERE   (DJH IN (T.DJH,T.CTDJH) OR CTDJH IN (T.DJH,T.CTDJH))  AND CBLX='030'))) END AS LT

如果是船头,那么第一个是DJH IN(1,'')=1+CTDJH IN(1,'')=3    最终等于4
如果不是船头,假如是第二个DJH(2,1)=2+CTDJH IN (2,1)=2      最终也是4

还有一种方法如果是不是船头的话,那么就是CTDJH=本船的CTDJH+1  即3+1

 

 

CASE WHEN T.CTDJH IS NULL THEN (DJH=T.DJH OR CTDJH=T.DJH ) WHEN T.CTDJH IS NOT NULL THEN (CTDJH=T.CTDJH or DJH=T.CTDJH ) END

 

 String sss="CASE WHEN T.DCCD='0' THEN '' WHEN T.DCCD='1' THEN (convert(varchar,(SELECT COUNT(*) FROM CB_GZDJ WHERE  CASE WHEN T.CTDJH IS NULL THEN (DJH=T.DJH OR CTDJH=T.DJH AND CBLX IN('010','020')) WHEN T.CTDJH IS NOT NULL THEN (CTDJH=T.CTDJH or DJH=T.CTDJH AND CBLX IN('010','020'))  END  ))+'/'+convert(varchar,(SELECT COUNT(*) FROM CB_GZDJ WHERE  CASE WHEN T.CTDJH IS NULL THEN (DJH=T.DJH OR CTDJH=T.DJH AND CBLX='030') WHEN T.CTDJH IS NOT NULL THEN (CTDJH=T.CTDJH or DJH=T.CTDJH AND CBLX='030') END  ))) END AS LT ";


DJH CTDJH
1  
2    1        2  1
3    1
4    1

 


from table where case when 0 then 1=1 end;
卍滄海一粟卐 18:28:48
不支持
卍滄海一粟卐 18:29:06
from table where (case when 0 then 1 end)=1;
卍滄海一粟卐 18:29:17
下面的可以,上面的不可以
卍滄海一粟卐 18:29:24
相当于where 1=1

case when最后要输出一个值,多用于select列表中,如果用在where中,就要看你能否正确输出值了很明显你的语句 (case when end)=最后没有响应的值出现,就不对了呗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值