在SQL中计算当年和上一年同期值的百分比变化
我的数据库中有一些数据,其中包含与每个日期对应的值。我需要计算当年和上一年同一时期的价值计数变化百分比。我所说的期间是指从1月1日到一年中的当前日期。如何在SQL中实现这一点。我正在使用SQL Server。我的桌子结构是这样的在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
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?(日期/时间通常是特定于产品的功能…)您的问题仍然不是很清楚。如果您提供输入和所需输出的样本,您将提高获得正确答案的机会。