2012-04-19 189 views
1

如何將兩個select查詢組合爲同一個表,它們在Sqlite中有兩個不同的位置?Sqlite:使用兩個不同的「where」查詢兩次相同的表

我有一個超過10k行的表。兩個例子行看起來是這樣的:

year | project | finance | flow 
1990 | water | 300500 | grant 
1999 | energy | 200500 | loan 

我嘗試不起作用:

SELECT sum(finance), (select sum(finance) from table where flow = grant) 
FROM table where flow = loan group by year 

結果將在今年有所有的結果組,並列出一列中的總和(預算)的贈款和貸款專欄。

year | grant | loan 
1990 | 62662 | 383983 
1991 | 28928 | 278272 

更新:第一個示例沒有正確對應我的用例。我不得不改變它。

回答

3

在這種情況下,用例:

SELECT year, 
     SUM(CASE WHEN flow = 'grant' THEN finance ELSE 0 END) AS grant_total, 
     SUM(CASE WHEN flow = 'loan' THEN finance ELSE 0 END) AS loan_total 
FROM your_table 
GROUP BY year 

的邏輯是比你概述了不同(這是一個單一選擇與一個WHERE子句中),但它會有效地轉動你需要從行到列中的數據。

+0

謝謝你看起來不錯,但我得到這個錯誤:「近」)「語法錯誤」。我嘗試過各種版本。 – crisscross 2012-04-20 13:24:52

+0

發現問題。每個CASE都需要一個END。我把它寫進你的答案。現在它可以工作。非常感謝!! – crisscross 2012-04-20 20:36:50

+0

對不起,離線幾天,並錯過了你的意見。事實上,我確實將END從CASE中刪除,並修改答案以顯示正確的語法。 – 2012-04-23 12:03:23

相關問題