TSQL“select”或临时表/游标

时间:2018-04-13 08:15:37

标签: sql sql-server tsql

我正在研究一个包含财务数据的项目。 我有一个包含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语句来完成这个,而不需要使用临时表和/或游标处理?

1 个答案:

答案 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

但是,您需要指定可以指定列排序的列?(即idrow_no)的名称