sqlsever条件筛选求值

1634541560(1).jpg有一批数据两个列(时间,内容),求他48小时内数据且时间系统时间30分钟以内的全部显示,超过30分钟的只显示内容里面未完成的值,,怎么来写这个sql 呀

fssj--时间    dealresuit 内容

十万个小问题 发布于 2021-10-18 15:12 (编辑于 2021-10-18 15:20)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-10-18 15:45

讲真没懂起需求:全部显示是啥?是这三个字段都查出来还是咋的?容里面未完成的值:内容不是 nr 字段?未完成值不是 dealresult?这不是两个字段么?image.png

  • 十万个小问题 十万个小问题(提问者) 48小时的数据未完成的全部展示,30分钟内不管完成与否都展示,这个样子的,nr不重要
    2021-10-18 15:51 
  • Z4u3z1 Z4u3z1 回复 十万个小问题(提问者) SELECT * FROM 表 where ( DATEDIFF(HOUR,fssj,getdate())<=48 and dealresult IN (\'未完成\',\'进行中\') ) OR DATEDIFF(MINUTE,fssj,getdate())<=30 OR 前48小时内未未完成,OR后30分钟内的所有数据
    2021-10-18 15:59 
最佳回答
0
尛鬼Lv5中级互助
发布于2021-10-18 15:14

你能不能把字段名截个图。。

最佳回答
0
黄源Lv6中级互助
发布于2021-10-18 15:21(编辑于 2021-10-18 15:54)

select * from(

select fssj,dealresuit 

case when fssj<dateadd(30,mi,getdate()) and dealresuit in('进行中','未完成') then 1

else 0 end 状态

from table

where fssj>DATEADD(24,hh,getdate())

select * from(

select fssj,dealresuit 

case when fssj>dateadd(30,mi,getdate()) then 1

else 0 end 状态

from table

where fssj>DATEADD(24,hh,getdate())

)t

内容判断类似在外层也用case when

报表里用状态选择显示 如未完成的值是指空值的话

select * from(

select fssj,dealresuit 

case when fssj<dateadd(30,mi,getdate()) and dealresuit is null then 1

else 0 end 状态

from table

where fssj>DATEADD(24,hh,getdate())

)t

  • 十万个小问题 十万个小问题(提问者) 不好使啊sir
    2021-10-18 15:35 
  • 黄源 黄源 回复 十万个小问题(提问者) 什么问题?
    2021-10-18 15:39 
  • 十万个小问题 十万个小问题(提问者) 回复 黄源 我套进去报错,sqlsever,内容里面 的值有:完成,开具,未完成,进行中。这四类30分钟内的求全部,超过30 只留未完成和进行中
    2021-10-18 15:44 
  • 黄源 黄源 回复 十万个小问题(提问者) 看上面第一个,评论限制字数....
    2021-10-18 15:55 
  • 3关注人数
  • 370浏览人数
  • 最后回答于:2021-10-18 15:54
    请选择关闭问题的原因
    确定 取消
    返回顶部