Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择给定年份的金额_Mysql - Fatal编程技术网

Mysql 选择给定年份的金额

Mysql 选择给定年份的金额,mysql,Mysql,我有一张表格,上面有国家、年份和每年的金额。我正在尝试编写一个查询,将给定年份的总金额相加,并将其作为列提供给我 例如,要获得如下输出: Country 1991 1992 1993 France 25 12 38 我尝试过这样的查询,但没有成功: SELECT country as "Recipient", SUM(usd_amount) AS "1991" WHEN project_year = 1991,

我有一张表格,上面有国家、年份和每年的金额。我正在尝试编写一个查询,将给定年份的总金额相加,并将其作为列提供给我

例如,要获得如下输出:

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
有什么建议吗? 谢谢 克里斯

试试看:

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:按项目年订购是没有意义的,因为您已经在进行聚合了。

请尝试以下方法

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

共享表中存储的数据示例。