SQL将多个子查询列连接在一起

例如,假设我有一个 12 行的 SQL 表,它看起来像下面左边的表,我想在右边创建聚合行数的汇总表。

这是此示例的 SQLFiddle:http ://sqlfiddle.com/#!9/ee508f/1

我可以通过以下查询分别获取这 4 个汇总列中的每一个:

SELECT Product, COUNT(*) AS bad FROM mytable WHERE Quality IN (1,2,3) GROUP BY Product;
SELECT Product, COUNT(*) AS acceptable FROM mytable WHERE Quality IN (4,5,6) GROUP BY Product;
SELECT Product, COUNT(*) AS good FROM mytable WHERE Quality IN (7,8,9) GROUP BY Product;
SELECT Product, COUNT(*) AS great FROM mytable WHERE Quality IN (10) GROUP BY Product;

但是如何将这 4 个结果合并到一个表格中,就像我的图片中显示的那样?我想要一个可以简单地添加额外列(而不是具有另一个嵌套级别)的解决方案,因为在我的实际项目中,我有 12 个这样的列并且深度嵌套,许多查询不会很可读。

回答

为什么你需要多个查询?

SELECT Product,
       SUM(CASE WHEN Quality IN (1,2,3) THEN 1
                ELSE 0
            END
          ) AS good,
       SUM(CASE WHEN Quality IN (4,5,6) THEN 1
                ELSE 0
            END
          ) AS fair,
       ...
       ...
  FROM YOUR_TABLE
 GROUP
    BY Product


以上是SQL将多个子查询列连接在一起的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>