我有两个月有两个值,例如:
July-2013 1838.08
Aug-2013 3500.08
如何计算8月与7月相比的百分比差异?
答案 0 :(得分:28)
这方面的公式很简单(Curr-Prev)*100.0/Prev
,不清楚如何应用它,因为我们不知道你的表定义,内容或键,因此不知道如何一般选择一个月,它是以前的价值。但是,硬编码就像这样:
SELECT
100.0*(curr.Val - prev.Val) / prev.Val As PercentDiff
FROM yourTable As curr
JOIN yourTable As prev
ON curr.MonthStr = 'Aug-2013' AND prev.MonthStr = 'July-2013'
答案 1 :(得分:1)
SELECT VAR(Bonus) 'Variance',
STDEVP(Bonus) 'Standard Deviation',
STDEV(Bonus) 'Standard Deviation',
VARP(Bonus) 'Variance for the Population'
FROM Sales.SalesPerson;
赞扬以下内容
答案 2 :(得分:1)
计算百分比变化的问题是,当“旧值”为0或者您将收到错误时需要注意。
一种方法是使用nullif(old_Value,0),但问题是当旧值为0时,你要求New_Value / NULL这是新值。 (绝对不是%变化)
我这样做了:
(case
when
OldValue = 0 and NewValue = 0
then
cast(0 as Decimal(10,2))
when
OldValue = 0
then
'Na'
else
cast(cast(
(
(
(cast(NewValue as decimal(11,3)) -
cast(OldValue as decimal(11,3))
)*100
)/cast(OldValue as decimal(11,3))
) as decimal(20,3)
) as varchar
)
end) '% Change'
我可能会抛出比必要更多的演员,但它对我来说效果很好。必要时给Na,必要时给0.