想要设置一个统计期间的参数,表中分别有A,B,C,D四个时间字段,首先如果没有A时间,取B时间,如果A,B时间都没有,取C时间,然后统计期间截取到月份要大于等于前面判断的A或B或C时间,小于D时间,该怎么设置参数,是在数据集里写where case when.....吗
数据集里写:
case when A is not null then A when B is not null then B when C is not null then C end <= '${统计期间}' and D > '${统计期间}'
对的 就是你这个思路
---------
WHERE (CASE WHEN A时间 IS NULL THEN
(case when B时间 IS NULL then
(CASE WHEN C时间 IS NULL THEN D时间 ESLE C时间 END)
else B时间 end)
ELSE A时间 END)>=
使用参数语句
${if(len(A时间)==0,if(len(B时间)==0,C时间,B时间),A时间)}
select
case when a时间 is not null then a时间
when b时间 is not null then b时间
else c时间 end as 时间判断,
d时间
form 表名称
where 1=1
and d时间>='${时间开始}'
and d时间<='${时间结束}'