Sqlite:用两个不同的“where”查询同一个表两次

时间:2012-04-19 23:43:33

标签: sqlite

如何为同一个表组合两个选择查询,在Sqlite中有两个不同的位置?

我有一个超过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

更新:第一个示例与我的用例不正确对应。我不得不改变它。

1 个答案:

答案 0 :(得分:3)

在这种情况下,请使用CASE:

 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子句的单个SELECT),但它会有效地将您需要的数据从行转移到列。