将两行结果查询合二为一

时间:2021-01-05 16:55:37

标签: mysql sql

我有一张桌子:

id | municipio_id |  ano | populacao
 1 |            0 | 2010 |      5000
 2 |            0 | 2011 |      5000

我创建了一个查询:

SELECT
case when ano = 2010 then populacao end a2010,
case when ano = 2011 then populacao end a2011
FROM populacao
where municipio_id = 0

结果是:

a2010 | a2011    
 5000 |  null
 null |  5000

我需要如下:

a2010 | a2011    
 5000 |  5000

有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

您想要聚合:

SELECT SUM(case when ano = 2010 then populacao end) as a2010,
       SUM(case when ano = 2011 then populacao end) as a2011
FROM populacao
WHERE municipio_id = 0;

如果您希望所有市政当局都使用它,请使用 GROUP BY

SELECT municipio_id,
       SUM(case when ano = 2010 then populacao end) as a2010,
       SUM(case when ano = 2011 then populacao end) as a2011
FROM populacao
GROUP BY municipio_id;