展示处理天数

mysql/hive中都可以:数据库表有一个创建日期的字段。有一个状态的字段,状态里面有未完成/已完成状态。现增加一个处理天数的字段,可以在数据库表,也可以在报表里面。计算方式:当前日期-创建日期,如果状态发现变为已完成就把这个日期写死,如果还未完成这个处理天数,就动态每天+1 

助人为乐 发布于 2022-4-13 09:06 (编辑于 2022-4-13 09:13)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
CD20160914Lv8专家互助
发布于2022-4-13 09:13(编辑于 2022-4-13 09:14)

if(c2="已完成",DATESUBDATE(today(),b2,"d"),DATESUBDATE(today(),b2,"d")+1)

你说的已完成,写死是什么意思?假如状态是已完成了,,用今天-创建时间如果是3  那么以后这个永远要显示成3?

  • 助人为乐 助人为乐(提问者) 这样写。当今天查看这个报表,这里是已完成,就是今天的日期。明天再查看就是明天的日期了吧
    2022-04-13 09:14 
  • 助人为乐 助人为乐(提问者) 对。写死的意思就是。比如说今天完成了,吧就把今天的日期。或者说是今天和创建日期的差值写到处理天数这里。固定下来
    2022-04-13 09:15 
  • CD20160914 CD20160914 回复 助人为乐(提问者) 那这个要在在数据库中处理单独建一列存一起。公式计算的都是固定的。。。。
    2022-04-13 09:16 
  • 助人为乐 助人为乐(提问者) 回复 CD20160914 就是不知道这个在数据库里面怎么处理已完成并记录这个日期、
    2022-04-13 09:17 
  • CD20160914 CD20160914 回复 助人为乐(提问者) 这个简单的办法就是每天把已完成的单独etl处理成一个表。把计算结果保存起来。。。展示的时候已完成的就取这个表的数据。。
    2022-04-13 09:26 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-4-13 09:11

什么数据库?MS SQL?oracle?mysql?

  • 助人为乐 助人为乐(提问者) mysql
    2022-04-13 09:13 
  • Z4u3z1 Z4u3z1 回复 助人为乐(提问者) SELECT (CASE WHEN 状态=\'未完成\' THEN datediff(CURDATE(),创建日期) ELSE datediff(结束日期,创建日期) AND) [DAY] FROM TABLE 斜杠是论坛自己加的,请删除
    2022-04-13 09:21 
  • 助人为乐 助人为乐(提问者) 回复 Z4u3z1 你这里的处理已完成的时间是当天的 就没有问题。但是如果。是之前完成的了。还是取的当前日期。这个处理天数就不对哦、没有达到写死的目的。
    2022-04-13 09:24 
  • shinger@126.com shinger@126.com 回复 助人为乐(提问者) 你没看懂SQL语句,CASE WHEN 子句里面已经判断了,如果 是未完成,就用创建日期和当前日期计算,否则就使用创建日期和结束日期来计算。 不过 大佬的写的有点瑕疵 CASE WHEN 状态=\'未完成\' THEN datediff(CURDATE(),创建日期) else datediff(day,创建日期,结束日期) END 应该这样写
    2022-04-13 18:16 
  • 助人为乐 助人为乐(提问者) 回复 shinger@126.com 首先谢谢你的回答哦,这里,当状态是已完成的时候,我要保存这个已完成的日期。且数据每天都会全量刷新一遍。我没有描述清楚。感谢你。
    2022-04-14 09:34 
  • 2关注人数
  • 409浏览人数
  • 最后回答于:2022-4-13 09:14
    请选择关闭问题的原因
    确定 取消
    返回顶部