[英]How to pick the latest row
I have two tables, namely Price List (Table A) and Order Record (Table B):- 我有两个表,即价格表(表A)和订单记录(表B):
Table A 表A
SKU Offer Date Amt
AAA 20120115 22
AAA 20120223 24
AAA 20120331 25
AAA 20120520 28
Table B 表B
A001 AAA 20120201
B001 AAA 20120410
C001 AAA 20120531
I have to retrieve the latest pricing for each customer. 我必须检索每个客户的最新价格。 The expected output should be like this:- 预期的输出应如下所示:
Customer SKU Order Date Amt
A001 AAA 20120201 28
B001 AAA 20120410 28
C001 AAA 20120531 28
Thanks. 谢谢。
Here is T-SQL - not sure what you are running, add that as a tag in your questions for better answers - Wrote this before the edit of the OP, so double check the cols. 这是T-SQL-不确定您正在运行什么,将其添加为问题中的标签以获得更好的答案-在OP编辑之前将其写好,因此请仔细检查cols。
EDITED per x-zeros' comment 根据x-zeros的评论进行编辑
SELECT B.CUSTOMER,S.SKU,B.ORDERDATE,S.Amt
FROM TABLE_B B
INNER JOIN
( SELECT C.SKU,C.OFFERDATE,C.Amt,
ROW_NUMBER() OVER (PARTITION BY C.SKU ORDER BY C.OFFERDATE DESC) X
FROM TABLE_A C
)S ON S.X = 1 AND B.SKU = S.SKU
ORDER BY B.CUSTOMER
CREATE TABLE TABLE_A
(SKU varchar(8), OfferDate Date, Amt int)
INSERT INTO TABLE_A
VALUES('AAA', '2012-01-15', 22),
('AAA' ,'2012-02-23', 24),
('AAA' ,'2012-03-31', 25),
('AAA' ,'2012-05-20', 28),
('BBB','2011-01-15 00:00:00.000', 33),
('BBB','2011-02-23 00:00:00.000', 35),
('BBB','2011-03-31 00:00:00.000', 36),
('BBB','2011-05-20 00:00:00.000', 39),
('CCC', '2012-01-15', 43),
('CCC' ,'2012-02-23', 45),
('CCC' ,'2012-03-31', 47),
('CCC' ,'2012-04-18', 44)
CREATE TABLE TABLE_B
(CUSTOMER varchar(8),SKU varchar(8), OrderDate Date)
INSERT INTO TABLE_B
VALUES('A001','AAA','2012-02-01'),
('B001','AAA','2012-04-10'),
('C001','AAA','2012-05-31'),
('A001','BBB','2011-02-01'),
('B001','BBB','2011-04-10'),
('C001','BBB','2011-05-31'),
('B001','CCC','2011-04-10'),
('C001','CCC','2011-05-31')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.