2015-07-28 69 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 
相關問題