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
Я хотел получить две последние Val
строки для каждой PolicyId
, но они не могут быть с той же даты.
Строки для PolicyId = 12
возвращаются правильно - ValId 4 и 5 .
Для PolicyId = 11
возвращаются строки с ValId 2 и 3, но поскольку они находятся в тот же день, я хотел, чтобы строка ValId 1 возвращалась вместо ValId 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