sql - 从付款和账单在同一字段中的表中计算付款拖欠。必须在 t-sql / sql
问题描述
我有一个如下表结构:
Account Number | Transaction Type | Transaction Date | Bill Due Date | Transaction Number | Transaction Amount
---------------|--------------------|--------------------|----------------|--------------------|-------------------
1 | B | 7/03/2019 | 7/04/2019 | 1 | $82.68
1 | P | 12/03/2019 | 30/12/3999 | 2 | $819.31
1 | B | 22/02/2019 | 25/03/2019 | 3 | $919.46
2 | B | 3/04/2019 | 4/05/2019 | 1 | $134.21
2 | P | 8/04/2019 | 30/12/3999 | 2 | $361.10
2 | P | 13/04/2019 | 30/12/3999 | 3 | $885.79
3 | B | 6/03/2019 | 6/04/2019 | 1 | $228.73
3 | P | 11/03/2019 | 30/12/3999 | 2 | $939.31
3 | B | 31/03/2019 | 1/05/2019 | 3 | $630.37
4 | B | 20/04/2019 | 21/05/2019 | 1 | $915.31
4 | P | 25/04/2019 | 30/12/3999 | 2 | $538.94
4 | B | 2/04/2019 | 3/05/2019 | 3 | $85.28
我需要计算每个帐户的欠款,然后将其老化,即计算欠款的年龄。然后我按年龄(0-30,31-60,60-90,90+)存储它。如果付款,这是一个先进先出的过程(最早的欠款会先得到偿付)。付款后,账单到期日为 3999-12-31
我已经使用 SAS 构建了这个,因为我已经开发了一个信用评分汽车,但现在我需要在 SQL Server 2017 中实现它。我会使用 SAS 的 Retain Etc,但我还没有在 t-sql 中找到一个可以做到这一点的函数。
甚至可能吗?
我使用了滚动总和(-bill (B), +Pay(P)),但我正在努力应对拖欠的老化并将它们存储起来。
我还必须通过快照查看它,然后在这些上计算我的建模变量(我为此使用分析窗口函数)。
我也尝试过老化的窗口函数,但我无法复制我开发的 SAS 脚本的输出。
任何帮助将不胜感激。
表以帐号为索引,反式为。拥有大约 2 个工厂唯一帐号和 5 亿笔交易
输出将如下所示:
解决方案
推荐阅读
- amazon-web-services - EFS 卷绑定在 ECS 任务定义的每个“terraform apply”上自动分离/重新附加
- android - 尝试使用 vs 代码在真实设备上运行我的颤振应用程序
- android - Android - 合并使用前后摄像头拍摄的视频
- windows - 在 Windows bat 文件中获取 git 命令的输出
- windows - heroku 在 Windows 上打开“/.well-known/openid-configuration”错误
- javascript - 在下一个 js 中使用时正确输入 javascript
- powershell - Powershell - 参数的使用
- python - 通过 XPath 选择 h2 元素
- coq - 如何使用 coq 证明列表连接不可交换?
- java - 使用 GSON 中的动态字段将 JSON 反序列化为不同的类(改造)