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

在SQL中计算当年和上一年同期值的百分比变化,sql,sql-server,Sql,Sql Server,我的数据库中有一些数据,其中包含与每个日期对应的值。我需要计算当年和上一年同一时期的价值计数变化百分比。我所说的期间是指从1月1日到一年中的当前日期。如何在SQL中实现这一点。我正在使用SQL Server。我的桌子结构是这样的 Id | Date ------------------------- 1xxxxx | 01-01-2014 2xxxxx | 14-01-2014 3xxxxx | 01-03-2014

我的数据库中有一些数据,其中包含与每个日期对应的值。我需要计算当年和上一年同一时期的价值计数变化百分比。我所说的期间是指从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  
试试这个:

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
声明
@今日,
@上一年的今天日期,
@今年_countint,
@上一年计数整数,
@变动浮动百分比
设置@today=getdate()
设置@prev\u year\u today=dateadd(年份,-1,@today)
挑选
@本年计数=计数(*)
从…起
一些价值观
哪里

请向我们展示表格结构(列、数据类型)、一些示例数据和您的预期结果……哪个dbms?(日期/时间通常是特定于产品的功能…)您的问题仍然不是很清楚。如果您提供输入和所需输出的样本,您将提高获得正确答案的机会。