我有一个 SQL 2012 查询,它给了我以下结果:
IP_Country ds Percentage
-------------------------------------
Australia 01/01/2013 0.70155
Australia 02/01/2013 0.685
Australia 03/01/2013 0.663594
Australia 04/01/2013 0.737541
Australia 05/01/2013 0.688212
Australia 06/01/2013 0.665384
Australia 07/01/2013 0.620253
Australia 08/01/2013 0.697183
结果继续显示相同日期和不同百分比的不同国家/地区。
我需要展示的是,这些百分比在同一国家/地区的日期之间的变化。
所以在 02/01 和 01/01 之间的差异是 0.02 - 我可以提取数据并在 excel 中执行此操作,但理想情况下我希望结果随着查询中的移动而出现。
最佳答案
您可以使用 LAG
和 LEAD
访问上一行和下一行。
SELECT *,
LAG([Percentage]) OVER (PARTITION BY [IP_Country] ORDER BY [ds])
- [Percentage] AS diff,
([Percentage] - LEAD([Percentage]) OVER (PARTITION BY [IP_Country] ORDER BY [ds]))
/ [Percentage] AS [ratio]
FROM YourTable
SQL Fiddle
关于SQL - 如何显示多行结果之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14729576/