这种情况下sql的思路怎么写?

是这样,主要需要三个数据,第一个是总数,这个简单,count一下就好,第二个是进行中,这个要取关联表中状态为处理中的任务,第三个是按时更新数,这个是要看上次更新的时间加上要求每次更新的时间是否在当前日期之前。现在的问题在于count只对存在的数据进行计数,如果一个人没有进行中的任务是不会置0的。并且进行中这列我是直接排序,所以并没有和人对应起来。

截取图片_20240220144055.png截取图片_20240220143846.png

FineReport NQkr7IRa 发布于 2024-2-20 14:56
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
JL98Lv6中级互助
发布于2024-2-20 14:59(编辑于 2024-2-20 15:56)

SLECT 

COUNT(*) AS 总数,

SUM(CASE WHEN 状态 = '处理中' THEN 1 ELSE 0 END ) AS 进行中

FROM 表名

------------------------------------------------------------------------------------

SUM(CASE WHEN fd_process_updtime +

 ( CASE WHEN 跟进频率= '每周'  THEN 7 

    WEHN 跟进频率 in ( '单数周','双数周')  THEN 14

     WEHN 跟进频率 = '每月'  THEN 30 END  ) > sysdate THEN 1 ELSE 0 END ) AS 按时更新数

  • NQkr7IRa NQkr7IRa(提问者) 跟进频率有三种: 跟进频率为每周时,按进度更新时间+7天 若小于当前时间,则未及时更新 跟进频率为单数周或双数周时,按进度更新时间+14天 若小于当前时间,则未及时更新 跟进频率为每月时,按进度更新时间+30天 若小于当前时间,则未及时更新 要怎么改写到SUM(CASE WHEN fd_process_updtime +n > sysdate THEN 1 ELSE 0 END ) AS 按时更新数里?
    2024-02-20 15:45 
  • JL98 JL98 回复 NQkr7IRa(提问者) 你这个按时更新数不能一直跟当前日期比较吧,如果是时间比较,要都转成相同的数据类型再去比较
    2024-02-20 15:48 
  • JL98 JL98 回复 NQkr7IRa(提问者) 那你还要判断一下跟进频率是什么,要加不同的天数
    2024-02-20 15:51 
  • JL98 JL98 回复 NQkr7IRa(提问者) 回答更新了
    2024-02-20 15:57 
最佳回答
0
煮酒话青梅Lv3见习互助
发布于2024-2-20 17:11

用一个人员列表进行左连接

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