ValId | PolicyId | Date | Value
------+----------+------------+-------
1 | 11 | 2020-06-01 | 2000
2 | 11 | 2020-06-03 | 3000
3 | 11 | 2020-06-03 | 4000
4 | 12 | 2020-06-02 | 8000
5 | 12 | 2020-06-03 | 8500
我想得到最新的前2名 Val
每行 PolicyId
但它们不能来自同一个日期。
行 PolicyId = 12
正确返回-有效4和5。
为了 PolicyId = 11
,返回具有有效2和3的行,但由于它们在同一日期,我希望返回有效1的行,而不是有效2的行。
SELECT
V.ValId, V.PolicyId, V.Value, V.Date
FROM
(SELECT
ValId, PolicyId, Value, Date,
ROW_NUMBER() OVER (PARTITION BY PolicyId ORDER BY Date Desc, ValId DESC) AS RowNum
FROM
TVal) V
WHERE
RowNum <= 2
2条答案
按热度按时间sirbozc51#
您可以按日期和日期内枚举行:
uqdfh47h2#
使用gordonlinoff的建议,我能够完成以下sql