SQL如何实现“超期天数”进行条件计算,请高手帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/07 20:25:52
首先感谢大家之前帮忙!
通过以下语句只能实现如图结果,如何实现“超期天数”进行条件计算
收回金额大于0时--超期天数=收款日期-到期日期,收回金额为空时--超期天数=当前日期-到期日期,

select a.订单, a.发货日期,a.到期日期,a.产品, a.数量, a.金额,a.收款日期 a.收回金额,
(a.金额-b.回收总数) as 余额,datediff(day,a.到期日期,a.收款日期) as 超期天数
from 表 a , (select 订单, sum(收回) as 回收总数 from 表 group by 订单 ) b where a.订单=b.订单

订单 发货日期 到期日期 产品 数量 金额 收款日期 收回 余额 超期天数
PO001 2009-8-1 2009-9-1 A 100 1000 2009-9-2 1000 0 1 收款日期-到期日期
PO002 2009-8-11 2009-9-11 B 200 4000 2009-9-15 2000 0 3 收款日期-到期日期
PO002 2009-8-11 2009-9-11 B 200 4000 2009-9-15 2000 0 3 收款日期-到期日期
PO003 2009-8-1 2009-9-1 D 210 2100 当前日期-到期日期
case when a.金额-b.回收总数>0 then datediff(day,a.到期日期,a.收款日期) else datediff(day,a.到期日期,getdate()) as 超期天数

这语句应该可以,但执行时提示:在关键字 'as' 附近有语法错误;第 5 行: 'b' 附近有语法错误。

select a.订单, a.发货日期,a.到期日期,a.产品, a.数量, a.金额,a.收款日期 a.收回金额,
(a.金额-b.回收总数) as 余额,
case when a.金额-b.回收总数>0 then datediff(day,a.到期日期,a.收款日期) else datediff(day,a.到期日期,getdate()) end as 超期天数
from 表 a , (select 订单, sum(收回) as 回收总数 from 表 group by 订单 ) b where a.订单=b.订单

以前少了一个一个end,现在加上了,还来的及吧

以上,希望对你有所帮助!

什么数据库?oracle可用case when实现

缺少end
case when ... end