Gop*_*pal 5 sql sql-server sql-server-2005
如何从SELECT语句的上一个结果行获取值
如果我们有一个名为cardevent的表并且有行[ID(int),Value(Money)]并且我们有一些行,例如
ID --Value
1------70
1------90
2------100
2------150
2------300
3------150
3------200
3-----250
3-----280
Run Code Online (Sandbox Code Playgroud)
等......
如何创建一个查询,获取每个行ID,值和上一个行值,其中数据显示如下
ID --- Value ---Prev_Value
1 ----- 70 ---------- 0
1 ----- 90 ---------- 70
2 ----- 100 -------- 90
2 ------150 -------- 100
2 ------300 -------- 150
3 ----- 150 -------- 300
3 ----- 200 -------- 150
3 ---- 250 -------- 200
3 ---- 280 -------- 250
Run Code Online (Sandbox Code Playgroud)
等等.
那么任何人都可以帮我找到解决这个问题的最佳解决方案吗?
需要查询帮助
您必须自己加入表,我不确定这是否是100%合法的SQL,但我目前没有SQL-Server尝试这个,但试试这个:
select (ID, Value) from table as table1 join
inner join table as table2
on table1.ID = (table2.ID -1)
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用 LAG() 和 LEAD() 函数来获取上一个和下一个值。
SELECT
LAG(t.Value) OVER (ORDER BY t.ID) PreviousValue,
t.value Value,
LEAD(t.value) OVER (ORDER BY t.ID) NextValue
FROM table t
GO
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34944 次 |
| 最近记录: |