0

我目前的查询是

case when datediff(day, isnull(installment_duedate, due_date), getdate()) < 30 
then amount_due else 0 end as [unpaid under 30 days]

我还有另外 3 个案例,在 30-60 天之间,在 60-90 天之间,甚至超过 90 天。

我目前的问题是,我的 installment_duedate 里面有未来的日期。如果有人有分期付款到期日,则类似于12-02-2012, 03-02-2013, 06-02-2013, 09-02-2013。如果是在未来,我希望它现在返回为 0,但目前该金额显示在我不到 30 天的时间内。

任何指针将不胜感激!

4

2 回答 2

2

您需要将案例更改为:

CASE WHEN DATEDIFF(DAY, ISNULL(installment_duedate, due_date), GETDATE()) BETWEEN 0 AND 30
     THEN amount_due ELSE 0 END AS [unpaid under 30 days]
于 2013-04-19T15:09:30.930 回答
2

在这一行中,当 installment_duedate 是过去的日期时,DATEDIFF返回小于 30 的负值,因此< 30条件得到满足

datediff(day, isnull(installment_duedate, due_date), getdate()) < 30

格式

DATEDIFF(datepart,startdate,enddate)

有关解决方案,请参阅下面的 Lamak回答

于 2013-04-19T15:12:45.710 回答