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