【发布时间】:2021-08-25 15:21:51
【问题描述】:
请帮我弄清楚如何找出当前债务的日期和自开始以来的天数我有这张表:
| Date | Customer | Deal | Sum |
|---|---|---|---|
| 20.11.2009 | 220000 | 222221 | 25000 |
| 27.11.2009 | 220001 | 222221 | -30000 |
| 20.12.2009 | 220000 | 222221 | 20000 |
| 31.12.2009 | 220001 | 222221 | -10000 |
| 12.12.2009 | 111110 | 111111 | 12000 |
| 25.12.2009 | 111110 | 111111 | 5000 |
| 12.01.2010 | 111110 | 111111 | -10100 |
| 12.12.2009 | 111110 | 122222 | 10000 |
| 29.12.2009 | 111110 | 122222 | -10000 |
在贷款中,共同借款人可以付款。如果有贷款的客户未能按时还款,他就有了债务。在这种情况下,表格中会出现一条相应的记录,其中 Sum 是未付金额(带有正号)。然后,如果客户付款(全部或部分),则会出现一条新记录,其中 Sum 是已支付的金额(带有“-”号)。需要注意的是,客户的付款并不一定会完全消除累积的债务,它只能是债务的一部分。
DROP TABLE IF EXISTS #PDCL
set dateformat dmy
CREATE TABLE #PDCL
(
Payment_dt date,
Customer int,
Deal int,
Currency varchar(5),
Sum_payment int
)
INSERT INTO #PDCL VALUES ('12.12.2009', 111110, 111111, 'RUR', 12000)
INSERT INTO #PDCL VALUES ('25.12.2009', 111110, 111111, 'RUR', 5000)
INSERT INTO #PDCL VALUES ('12.12.2009', 111110, 122222, 'RUR', 10000)
INSERT INTO #PDCL VALUES ('12.01.2010', 111110, 111111, 'RUR', -10100)
INSERT INTO #PDCL VALUES ('20.11.2009', 220000, 222221, 'RUR', 25000)
INSERT INTO #PDCL VALUES ('20.12.2009', 220000, 222221, 'RUR', 20000)
INSERT INTO #PDCL VALUES ('31.12.2009', 220001, 222221, 'RUR', -10000)
INSERT INTO #PDCL VALUES ('29.12.2009', 111110, 122222, 'RUR', -10000)
INSERT INTO #PDCL VALUES ('27.11.2009', 220001, 222221, 'RUR', -30000)
--Start date of the current debt
SELECT Deal
, MIN(Payment_dt) AS Start_date_current_debt
FROM #PDCL
WHERE Sum_payment > 0
GROUP BY Deal
--Number of days of current debt
SELECT Deal
, DATEDIFF(d, MIN(Payment_dt), MAX(Payment_dt)) AS Num_days_current_debt
FROM #PDCL
GROUP BY Deal
数据集有许多不同的客户和交易。我举了一个说明性的例子,因此出现了问题。在其中,客户有两倍的债务。
我想要的答案:
| Deal | Start_date_current_debt |
|---|---|
| 111111 | 2009-12-12 |
| 122222 | 2009-12-12 |
| 222221 | 2009-12-20 |
| Deal | Num_days_current_debt |
|---|---|
| 111111 | todate - 2009-12-12 |
| 122222 | 17 |
| 222221 | todate - 2009-12-20 |
【问题讨论】:
-
感谢您发布创建表和示例数据的脚本 - 这是提出 SQL 问题的完美方式!
标签: sql sql-server tsql