我正在尝试显示基于最小日期值和今天的日期的结果集,但似乎无法使其正常工作。本质上,这是一个对日期敏感的价格表。
示例数据
ID Title Value ExpireDate
1 Fred 10 2019-03-01
2 Barney 15 2019-03-01
3 Fred2 20 2019-06-01
4 Barney2 25 2019-06-01
5 Fred3 30 2019-07-01
6 Barney3 55 2019-07-01
必填结果:
根据最短日期显示记录> GetDate()
3 Fred2 20 2019-06-01
4 Barney2 25 2019-06-01
任何帮助都会很棒-谢谢。
答案 0 :(得分:4)
使用where子句过滤所有将来的行,并使用row_number()
查找每个组的第一行:
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY Title ORDER BY ExpireDate) AS rn
FROM t
WHERE ExpireDate >= CAST(CURRENT_TIMESTAMP AS DATE)
) AS x
WHERE rn = 1
根据您修改后的问题,您可以执行以下操作:
SELECT TOP 1 WITH TIES *
FROM t
WHERE ExpireDate >= CAST(CURRENT_TIMESTAMP AS DATE)
ORDER BY ExpireDate