1

如何组合同一个表的两个选择查询,它们在 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

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

4

1 回答 1

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

于 2012-04-20T00:48:47.930 回答