sql怎么用一张记录了逾期期数的拉链表计算累计逾期天数
时间: 2024-09-19 17:03:00 浏览: 54
在SQL中,计算基于逾期期数的累计逾期天数通常涉及到窗口函数和条件判断。假设我们有一个名为`loans`的表,其中包含`loan_id`、`due_date`和`late_days`字段,`late_days`表示每笔贷款逾期的天数。要计算每个贷款的累计逾期天数,可以使用下面的查询:
```sql
WITH CTE AS (
SELECT
loan_id,
due_date,
late_days,
ROW_NUMBER() OVER (PARTITION BY loan_id ORDER BY due_date) as row_num
FROM loans
)
SELECT
loan_id,
due_date,
COALESCE(SUM(CASE WHEN late_days > 0 THEN late_days ELSE 0 END), 0) OVER (PARTITION BY loan_id ORDER BY due_date) as cumulative_late_days
FROM CTE
ORDER BY loan_id, due_date;
```
这个查询首先创建了一个CTE(公共表表达式),对每一笔贷款按日期排序并分配行号。然后,在`SUM()`函数中使用`CASE`表达式,如果`late_days`大于0,则累加逾期天数;否则(即未逾期或已还清的部分),忽略它们。`COALESCE()`用于处理可能出现的NULL值。
结果会显示每个贷款ID下的累计逾期天数,从最早的逾期开始累计。
阅读全文