2012-04-09 71 views
1

我有一张表,每年的国家,年份和金额。我试图编写一个查询,将总和给定年份的总金额,并将其作为列给我。选择给定年份的金额

例如,有一个输出,看起来像:

Country 1991  1992  1993 
France  25  12  38 

我想这样的查询,但无济于事:

SELECT 
    country as "Recipient", 
    SUM(usd_amount) AS "1991" WHEN project_year = 1991, 
    SUM(usd_amount) AS "1992" WHEN project_year = 1992, 
    SUM(usd_amount) AS "1993" WHEN project_year = 1993 

FROM tb1 

GROUP BY project_year, country 
order by country, project_year 

有什么建议? 谢谢! 克里斯

+1

共享存储在表中的数据的exapmle。 – 2012-04-09 06:18:23

回答

0

试试这个:

SELECT 
    country as "Recipient", 
    SUM(if(project_year = 1991, usd_amount, 0)) AS "1991", 
    SUM(if(project_year = 1992, usd_amount, 0)) AS "1992", 
    SUM(if(project_year = 1993, usd_amount, 0)) AS "1993", 
FROM tb1 
GROUP BY country 
ORDER BY country 

PS:这是没有意义的项目一年顺序您已经在它聚集。

0

尝试以下

SELECT 
    country as "Recipient", 
    SUM(case WHEN project_year = 1991 then usd_amount else 0 end) AS "1991" , 
    SUM(case WHEN project_year = 1992 then usd_amount else 0 end) AS "1992" , 
    SUM(case WHEN project_year = 1993 then usd_amount else 0 end) AS "1993" 

FROM tb1 

GROUP BY country, project_year 
order by country, project_year