设置一个统计期间的参数

想要设置一个统计期间的参数,表中分别有A,B,C,D四个时间字段,首先如果没有A时间,取B时间,如果A,B时间都没有,取C时间,然后统计期间截取到月份要大于等于前面判断的A或B或C时间,小于D时间,该怎么设置参数,是在数据集里写where case when.....吗

SQL 嘿嘿嘿嘿嘿嘿 发布于 2023-10-10 10:18 (编辑于 2023-10-10 11:32)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
嘿嘿嘿嘿嘿嘿Lv4初级互助
发布于2023-11-2 14:27

数据集里写:

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 > '${统计期间}'

最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-10-10 10:19(编辑于 2023-10-10 10:23)

对的 就是你这个思路

---------

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)>=

  • 嘿嘿嘿嘿嘿嘿 嘿嘿嘿嘿嘿嘿(提问者) case when 后面要咋写哈哈哈哈
    2023-10-10 10:20 
  • Z4u3z1 Z4u3z1 回复 嘿嘿嘿嘿嘿嘿(提问者) 补充在上面了
    2023-10-10 10:23 
  • Z4u3z1 Z4u3z1 回复 嘿嘿嘿嘿嘿嘿(提问者) 不然呢?如果你的数据库支持更高级的函数,或者你自己写个函数也可以
    2023-10-10 10:57 
  • 嘿嘿嘿嘿嘿嘿 嘿嘿嘿嘿嘿嘿(提问者) 回复 Z4u3z1 THEN D时间??? D时间跟ABC时间不做比较,只是最后参数那里要小于D时间
    2023-10-10 10:59 
  • Z4u3z1 Z4u3z1 回复 嘿嘿嘿嘿嘿嘿(提问者) 你就把最里面的case end 改成 C时间呗。照瓢画葫芦
    2023-10-10 11:06 
最佳回答
0
Harry768Lv6见习互助
发布于2023-10-10 10:39

使用参数语句

${if(len(A时间)==0,if(len(B时间)==0,C时间,B时间),A时间)}

最佳回答
0
CD20160914Lv8专家互助
发布于2023-10-10 11:57

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时间<='${时间结束}'

最佳回答
0
YoungEchoLv3见习互助
发布于2023-10-13 14:04

image.png

  • 3关注人数
  • 312浏览人数
  • 最后回答于:2023-11-2 14:27
    请选择关闭问题的原因
    确定 取消
    返回顶部