MySQL查询:如何在列中汇总3个不同的值,显示结果集中每个值的总和

use*_*172 2 mysql sql pivot aggregate-functions

我有一个名为inventory的表,其中包含两列,如下所示:

在此输入图像描述

我想查询此表以返回一个结果集,该结果集列出了我拥有的每个条件的多少项(下面的示例中的列标题在结果集中不需要...只是为了清楚起见,这里显示):

在此输入图像描述

我猜它会是这样的:

  SELECT item, sum(condition???), sum(condition???), sum(condition???) 
    FROM inventory 
GROUP BY item
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?谢谢.

Tar*_*ryn 6

你非常接近:

SELECT item, 
  sum(case when `condition` = 'poor' then 1 else 0 end) as poor, 
  sum(case when `condition` = 'fair' then 1 else 0 end) as fair, 
  sum(case when `condition` = 'good' then 1 else 0 end) as good
FROM inventory 
GROUP BY item
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo