SQL:使用不同的值重复相同的列取决于条件

时间:2015-09-16 08:03:12

标签: mysql

我有一张桌子:

id          crop_id     income      year        insert_date
----------- ----------- ----------- ----------- -----------
1           11          35000       2011        2011-12-12
2           11          45900       2012        2013-04-11
3           11          37000       2013        2015-02-12
4           11          39000       2014        2015-10-09

我想从表中选择输出值:

crop_id     2011        2012        2013
----------- ----------- ----------- -----------
11          35000       45900       37000

是否可以通过单个查询?

2 个答案:

答案 0 :(得分:1)

这是你如何做到的。

select crop_id, sum(case when year = 2011 then income else 0 end) as year2011 from MYTABLE group by crop_id;

我没有在SQLFiddle中尝试过,因为由于某种原因它现在无法正常工作。但我认为你有主要想法。减去你应该在这个查询中硬编码几年,我现在不能弄明白,如果不使用程序语言,你怎么能避免它。

答案 1 :(得分:0)

您可以使用条件聚合来获得所需的结果:

select
  crop_id,
  max(case when year=2011 then income end) as "2011",
  max(case when year=2012 then income end) as "2012",
  max(case when year=2013 then income end) as "2013"
from your_table
group by crop_id;

如果每个作物和年份可以有多个记录,则应使用sum函数而不是max