计算SQL中同一时期的当前年份和上一年的值的百分比变化

时间:2015-04-29 08:26:57

标签: sql sql-server

我的数据库中有一些数据包含与每个日期对应的值。我需要计算同一时期当年和上一年的价值计数的百分比变化。按期间我的意思是从1月1日到当年的当前日期。如何在SQL中执行此操作。我正在使用SQL Server。我的表格结构是这样的。

Id          |  Date   
-------------------------  
1xxxxx      |  01-01-2014  
2xxxxx      |  14-01-2014  
3xxxxx      |  01-03-2014  
4xxxxx      |  12-10-2014  
5xxxxx      |  01-12-2014  
6xxxxx      |  02-03-2015  
7xxxxx      |  04-03-2015  
8xxxxx      |  11-04-2015  

1 个答案:

答案 0 :(得分:1)

试试这个:

declare 
  @today date,
  @prev_year_today date,
  @this_year_count int,
  @prev_year_count int,
  @percentage_change float

set @today = getdate()
set @prev_year_today = dateadd(year, -1, @today)

select 
  @this_year_count = count(*) 
from 
  some_values
 where
  year <= @today and
  datepart(year, year) = datepart(year, @today)

select
  @prev_year_count = count(*)
from
  some_values
where
  year <= @prev_year_today and
  datepart(year, year) = datepart(year, @prev_year_today)

 set @percentage_change = 100.00 * (@this_year_count - @prev_year_count) / @prev_year_count
 select @percentage_change

SQLFiddle