在 SQL Server 2014 中的以下数据集中,我如何选择价格 >= 2/1/2014,然后选择 2/1/2014 之前的 7 行?
Date Price
2014-01-23 10269.389648
2014-01-24 10034.44043
2014-01-27 9981.349609
2014-01-28 10066.839844
2014-01-29 9962.919922
2014-01-30 10048.69043
2014-01-31 9967.650391
2014-02-03 9741.580078
2014-02-04 9816.969727
2014-02-05 9809.030273
2014-02-06 9940.219727
2014-02-07 10055.339844
2014-02-10 10050.400391
我可以轻松地在 WHERE 子句中获取 >= 2/1 的行,但我不确定如何选择前面的 5 行,因为日期不连续。我无法使用 2 月 1 日之前 5 天的开始日期,因为我需要 2 月 1 日之前指定的价格数量。如果我只减去 2 月 1 日之前的 7 天,我将无法获得正确的价格/行数。
最佳答案
以下是使用 ROW_NUMBER
获取 2014-02-01
之前的前 7 条记录的方法:
;With Previous As
(
Select Date, Price, Row_Number() Over (Order By Date Desc) RN
From Table
Where Date < '2014-02-01'
),
Cur As
(
Select Date, Price
From Table
Where Date >= '2014-02-01'
)
Select Date, Price
From Cur
Union All
Select Date, Price
From Previous
Where RN <= 7
关于sql - 如何从 SQL Server 2014 中的指定行获取指定数量的先前行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32747546/