我有一个基本的订单明细表,其中包含:docDate
,customerCode
,itemCode
,Price
和Quantity
。看了一些类似的问题,但他们似乎没有考虑到我需要的一切,而且我没有重新考虑其他解决方案。
最终目标:仅限客户购买的每件商品的最新记录。 (所以每个项目一条记录)
价格和数量变化记录到记录,我只想要最新的。
这为我提供了每个项目(代码和日期)的最新条目
SELECT itemCode, MAX(docDate) AS docDate
FROM RDR1
WHERE customerCode= 'TEST001'
GROUP BY ItemCode
现在我需要能够从最近的行中提取其他信息,例如价格和数量。
答案 0 :(得分:1)
我想你想要这样的事情:
select
* -- or whatever columns you actually want
from
RDR1
inner join
(SELECT itemCode, MAX(docDate) AS docDate
FROM RDR1
WHERE customerCode= 'TEST001'
GROUP BY ItemCode) MD
on MD.docDate = RDR1.docDate
and md.ItemCode = RDR1.ItemCode
答案 1 :(得分:0)
SELECT distinct (ItemCode), docDate, Price, Quantity
FROM RDR1
WHERE customerCode= 'TEST001'
ORDER BY docDate DESC
答案 2 :(得分:0)
使用ROW_NUMBER:
SELECT *
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY itemCode ORDER BY docDate DESC) AS RowNumber, *
FROM RDR1
WHERE customerCode = 'TEST001'
) x
WHERE x.RowNumber = 1
ORDER BY x.itemCode
要了解多个客户的概述,请将customerCode
添加到分区:
SELECT ROW_NUMBER() OVER (PARTITION BY customerCode, itemCode ORDER BY docDate DESC) AS RowNumber, *