2015-07-28 68 views
0

我有一个名为Data的表。SQL根据条件添加值然后跳过两个和数

Data Year Type Value 1 1 5 1 1 10 1 2 15 1 2 25 1 1 15 1 2 20 1 1 5 2 2 10 2 2 45 2 2 10 2 1 20 2 2 5 2 1 15 2 1 0

我想每年总和一切是1型(SUM1)和总结一切是2型(SUM2),然后通过SUM2和组的结果由年划分SUM1。对于第一年将是sum1 =(5 + 10 + 15 + 5 = 35),sum2 =(15 + 25 + 20 = 60),sum1(35)/ sum(60)= 0.58333。完整的输出将

Year Value 1 0.5833 2 0.5

我曾尝试下面的查询,但它不工作。 SELECT d.Year, a.Sum1/b.Sum2 FROM Data d, (SELECT Data.Year, SUM(Value) AS Sum1 FROM Data WHERE Type=1 GROUP BY Data.Year) a, (SELECT Data.Year, SUM(Value) AS Sum2 FROM Data WHERE Type=2 GROUP BY Data.Year) b GROUP BY d.Year

当我运行查询时,我得到You tried to execute a query that does not include the specified expression 'a.Sum1/b.Sum2' as part of an aggregate function.它是什么我做错了我的查询?

+0

只存在1型和2型。您的查询提到类型4.它是一个错字错误? – shubhamagiwal92

+0

是的,这是一个错字,我现在更新了这篇文章。 – g3blv

回答

3

您可以使用使用IIF函数

select Year,sum(iif(Type=1, value, 0))/sum(iif(Type=4, value, 0)) 
from data 
GROUP BY Year 
相关问题