我的数据库中有一些数据包含与每个日期对应的值。我需要计算同一时期当年和上一年的价值计数的百分比变化。按期间我的意思是从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
答案 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