2018-11-13sql的查询判断
2018-11-13 本文已影响0人
Xmaxdev
我们在sql中的 case when 里面可以叠加相同的语句,
case when 条件 then case when 条件 end else case when 条件 then 。。。 end
CASE WHEN
-- 判断在特殊岗位是否有设定好的天数
(sp.round_num IS not NULL || sp.day_num != '')
AND(LEFT(spe.add_time,4)<'${comboBox}' || (LEFT(spe.add_time,4)='${comboBox}' AND CEILING(SUBSTRING(spe.add_time,6,2)/2)<=1))
AND ((spe.del_time IS NULL || spe.del_time = '')||
-- 且结束时间是否包含在所选年度的轮次里面
LEFT(spe.del_time,4)>'${comboBox}' || (LEFT(spe.del_time,4)='${comboBox}' AND CEILING(SUBSTRING(spe.del_time,6,2)/2)>=1))
THEN
CASE WHEN
-- 如果岗位表存在这个轮次
sp.round_num LIKE '%1%'
THEN
-- 那么值就是数据库里面的,否则就设置为0
sp.day_num ELSE 0 END
-- 如果不是特殊岗位 那么就设置成5天
ELSE 5 END as '应完成天数'