求SQL SERVER 按指定条件提取最新记录

发布于 2022-09-07 16:50:59 字数 1288 浏览 23 评论 0

现有一套系统,没有源码也找不到开发商了,现想自己做一个报表,但遇到了个恶心的问题,求教
数据库SQL SERVER 2008 R2
简化的表结构如下
id 客户ID 购买日期 到期时间 商品ID 数量 单价 金额
1 1 2017-1-1 2018-3-1 3 1 2 2
2 1 2018-5-1 2019-6-1 3 1 3 3
3 3 2016-3-15 2017-2-1 8 1 4 4
4 3 2017-3-15 2018-1-1 8 1 5 5
5 3 2018-2-1 2018-6-1 9 1 6 6
6 3 2018-7-1 2018-6-1 9 -1 7 -7
7 4 2015-4-2 2016-12-20 15 1 8 8
8 4 2016-12-21 2017-5-4 15 1 9 9
9 4 2017-5-5 2017-12-31 15 1 10 10
10 4 2018-6-1 2020-1-1 15 1 11 11

clipboard.png

需求是查询所有客户最后购买每种商品的单据,按照最后一次购买的时间,包括负数的单据,但不能按ID,因为这套系统当初开发的时候貌似给过一个修改工具,是可以修改订单日期的,目前数据库中的数据很乱
最后期望得到的数据应该是这样的:

id 客户ID 购买日期 到期时间 商品ID 数量 单价 金额
2 1 2018-5-1 2019-6-1 3 1 3 3
4 3 2017-3-15 2018-1-1 8 1 5 5
6 3 2018-7-1 2018-6-1 9 -1 7 -7
10 4 2018-6-1 2020-1-1 15 1 11 11

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜空下最亮的亮点 2022-09-14 16:51:00
//由于题主没有讲明数据列的字段,我这里自己命了名,如下:
//表名 Table_Bill

————————————————————————————————————————————————————————————————————————————
id  |  客户ID  |  购买日期  |  到期日期  |  商品ID  |  数量  |  单价  |  金额
————————————————————————————————————————————————————————————————————————————
Id  |  CusId   |  BuyTime  |  DueTime  | ArticlId |  Num   | Price |  Money
————————————————————————————————————————————————————————————————————————————

SELECT a.*  FROM [Table_Bill] a,(SELECT MAX(BuyTime) AS BuyTime ,ArticlId FROM [Table_Bill] GROUP BY ArticlId) b

WHERE a.BuyTime=b.BuyTime AND a.ArticlId=b.ArticlId 

ORDER BY a.ArticlId

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文