2012-04-19 102 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

相关问题