我必须计算表x中行值之间的差异(sql server)
表x
ID A
1 100
2 200
3 300
4 400
所以我编写了下面的sql查询
SELECT ID,
A
A - COALESCE (lag(A) OVER (ORDER BY date), 0) AS Difference
FROM Table X
结果是
ID A Difference
1 100 100
2 200 -100
3 300 -100
4 400 -100
我想要的是保持第一行的差值始终为0
ID A Difference
1 100 0
2 200 -100
3 300 -100
4 400 -100
但我不知道怎么做。
3条答案
按热度按时间gk7wooem1#
你可以试着通过а 的值
default
的参数LAG()
窗口功能。如文档中所述default
参数是当偏移量超出分区范围(对于第一行,前一行超出该范围)时返回的值。表格:
位置:
结果:
dffbzjpn2#
感谢@zhorov提供了表模式,数据
您可以使用isnull或coalesce来获得差异。
ct3nt3jp3#
您可以尝试以下查询。
对于这种类型的查询
order by
子句根据列和应用的order by
条款ascending
或者descending
结果可能不同。现场演示