我有一个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