我正在研究一个包含财务数据的项目。 我有一个包含closePrice列的表。 我需要以前一时间段的closePrice成为下一时间段的开盘价的方式选择数据。
数据:
ClosePrice
0.77512
1.18488
0.87144
132.297
1.23644
151.804
期望的结果:
OpenPrice ClosePrice
1.18488 0.77512
0.87144 1.18488
132.297 0.87144
1.23644 132.297
151.804 1.23644
151.804
我的问题是......有没有办法用select语句来完成这个,而不需要使用临时表和/或游标处理?
答案 0 :(得分:6)
您希望SQL Server + 12提供lead()
功能
select LEAD(ClosePrice) over(order by ?) as OpenPrice, ClosePrice
from table t
您还可以使用apply
运算符
select OpenPrice, ClosePrice
from table t outer apply (
select top 1 ClosePrice as OpenPrice
from table where ? = t.?+1) tt
但是,您需要指定可以指定列排序的列?
(即id
或row_no
)的名称