Zan*_*nam 1 sql sql-server sql-server-2012
我有一个以下格式的表:
Time Quantity
10:01:01.000 100
10:01:01.001 50
10:01:01.002 0
10:01:01.003 100
10:01:03.001 100
Run Code Online (Sandbox Code Playgroud)
请注意我已根据时间订购了上述行.
我想交叉加入(或任何其他连接),以便加入仅在第一次高于当前时间而不是全部时发生.我的最终结果如下:
Time Quantity Time2 Quantity2
10:01:01.000 100 10:01:01.001 50
10:01:01.001 50 10:01:01.002 0
10:01:01.002 0 10:01:01.003 100
10:01:01.003 100 10:01:03.001 100
10:01:03.001 100 NULL NULL
Run Code Online (Sandbox Code Playgroud)
该表有4200万行和10列.所以,我正在寻找有效的东西.
正如您所使用的那样,SQL Server 2012您可以使用LEAD
SELECT a.Time,
a.Quantity,
LEAD(Time) OVER (ORDER BY Time) Time2,
LEAD(Quantity) OVER (ORDER BY Time) Quantity2
FROM tableName a
Run Code Online (Sandbox Code Playgroud)