【发布时间】:2012-05-21 12:25:11
【问题描述】:
我想使用 SQL Server 查询基本上计算两年内的百分比差异。
由于某种原因,当我在年份字段上使用 -1 时,它返回 null。
如果我不在当年做 -1,我目前所拥有的工作,但显然它返回 100%,因为它是今年与今年的比较,而不是今年与上一年的比较。
这是我的查询:
SELECT Year,
Sum(Amount)
AS Total,
(SELECT Sum(Amount)
FROM Purchases
WHERE Purchases.Year = Budgets.Year)
AS Actual,
( ( (SELECT Sum(Amount)
FROM Purchases
WHERE Purchases.Year = Budgets.Year) / Sum(Amount) ) * 100 )
AS
BudgetPercentage,
( (SELECT Sum(Amount)
FROM Budgets
WHERE Budgets.Year = Budgets.Year) / (SELECT Sum(Amount)
FROM Budgets
WHERE Budgets.Year = (
Budgets.Year - 1
)) * 100
) AS
PerYearPercentage
FROM Budgets
WHERE ServiceStationId = 1
GROUP BY Year
问题在于 Budgets.Year - 1,知道我可以做些什么来获得想要的结果吗?
【问题讨论】:
-
Budgets.Year是什么数据类型? varchar?诠释?日期时间? -
那么,您想将每年年与其前身进行比较,对吗?
-
抱歉,还有一个问题。主查询使用过滤器 (
ServiceStationId = 1),但您计算PerYearPercentage的子查询没有该过滤器。这是故意的还是无意的遗漏? -
目前它是设计使然,最后我还没有完全测试它,并且可能会导致逻辑错误,因为我可能会比较不正确的值,我目前的首要任务是能够计算出这个百分比
标签: sql-server subquery where-clause