0
我想有一种更好的方法可以从row_number
中获取最后一行,而不是使用T-SQL进行多重嵌套。使用SQL获取ROW_NUMBER中的最后一行使用SQL
我需要订单总数和最后订购日期。说我有以下几点:
DECLARE @T TABLE (PERSON_ID INT, ORDER_DATE DATE)
INSERT INTO @T VALUES(1, '2016/01/01')
INSERT INTO @T VALUES(1, '2016/01/02')
INSERT INTO @T VALUES(1, '2016/01/03')
INSERT INTO @T VALUES(2, '2016/01/01')
INSERT INTO @T VALUES(2, '2016/01/02')
INSERT INTO @T VALUES(3, '2016/01/01')
INSERT INTO @T VALUES(3, '2016/01/02')
INSERT INTO @T VALUES(3, '2016/01/03')
INSERT INTO @T VALUES(3, '2016/01/04')
我要的是:
PERSON_ID ORDER_DATE ORDER_CNT
1 2016-01-03 3
2 2016-01-02 2
3 2016-01-04 4
有没有更好的方式来做到这一点,除了以下:
SELECT *
FROM (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY PERSON_ID ORDER BY ORDER_CNT DESC) AS LAST_ROW
FROM (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY PERSON_ID ORDER BY ORDER_DATE) AS ORDER_CNT
FROM @T
) AS A
) AS B
WHERE LAST_ROW = 1