我有一个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中执行此操作,但理想情况下,我希望结果随查询的移动而变化。

最佳答案

您可以使用LAGLEAD访问上一行和下一行。

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

07-27 19:38