鍍金池/ 問答/數(shù)據(jù)庫/ 求SQL SERVER 按指定條件提取最新記錄

求SQL SERVER 按指定條件提取最新記錄

現(xiàn)有一套系統(tǒng),沒有源碼也找不到開發(fā)商了,現(xiàn)想自己做一個(gè)報(bào)表,但遇到了個(gè)惡心的問題,求教
數(shù)據(jù)庫SQL SERVER 2008 R2
簡(jiǎn)化的表結(jié)構(gòu)如下
id 客戶ID 購買日期 到期時(shí)間 商品ID 數(shù)量 單價(jià) 金額
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

需求是查詢所有客戶最后購買每種商品的單據(jù),按照最后一次購買的時(shí)間,包括負(fù)數(shù)的單據(jù),但不能按ID,因?yàn)檫@套系統(tǒng)當(dāng)初開發(fā)的時(shí)候貌似給過一個(gè)修改工具,是可以修改訂單日期的,目前數(shù)據(jù)庫中的數(shù)據(jù)很亂
最后期望得到的數(shù)據(jù)應(yīng)該是這樣的:

id 客戶ID 購買日期 到期時(shí)間 商品ID 數(shù)量 單價(jià) 金額
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

回答
編輯回答
夢(mèng)若殤
//由于題主沒有講明數(shù)據(jù)列的字段,我這里自己命了名,如下:
//表名 Table_Bill

、

————————————————————————————————————————————————————————————————————————————
id  |  客戶ID  |  購買日期  |  到期日期  |  商品ID  |  數(shù)量  |  單價(jià)  |  金額
————————————————————————————————————————————————————————————————————————————
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

2017年10月1日 22:01