sql-server - 创建老化报告查询
问题描述
我需要您的帮助来提出一个可以给我付款帐龄报告的查询。简单的数据如下所示:
---------------------------------------------------------------------------------
| ID | Customer Name | Total Invoice | Paid Invoice | Paid Date | Amount | Aging
---------------------------------------------------------------------------------
| 1 | David | $100 | $0 |10/10/2018 | $100 | 1
| 2 | David | $100 | $80 |15/10/2018 | $20 | 5
| 3 | David | $100 | $100 |18/10/2018 | $0 | 8
| 4 | Jonh | $250 | $0 |18/10/2018 | $100 | 0
---------------------------------------------------------------------------------
| ID | Customer Name | Total Invoice | Paid Invoice | Paid Date | Amount | Aging
---------------------------------------------------------------------------------
| 1 | David | $100 | $100 |18/10/2018 | $0 | 8
| 2 | Jonh | $250 | $ 0 |18/10/2018 | $250 | 0
解决方案
您需要每个客户的最后一行。一种巧妙的方法是使用row_number
windows 功能:
SELECT *
FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY customer_name ORDER BY aging DESC) AS rn
FROM mytable) t
WHERE rn = 1
推荐阅读
- coldfusion - 在文本文档中查找配对值的最有效方法是什么
- python - Wagtail:调用 routeablepageurl 的模板标签抛出 AttributeError
- java - 将输入流打印到文本文件
- node.js - NodeJS socket.io 无法处理性能测试中的到达率
- object - objcopy 生成巨大的二进制文件(265M)
- java - 谷歌地理编码 SSL 握手异常
- java - ExpandableListView 对于列表中的最后一项表现异常
- html - 具有 IE11 规范的 CSS Grid - 网格自身折叠
- jquery - 如何使用 .on() 传递 2 个参数?
- c# - dbml linq 中 where 子句中比较日期的问题