MySQL - 将一列/三行重组为三列/一行?

标签 mysql subquery

我是 mySQL 的新手,正在努力完成以下任务。我有一个表 t1,其中列出了三列:

ITEM    SIZE    COUNT
------------------------
1001    small   11
1001    medium  6
1001    large   34
1002    small   10
1002    large   23
1003    small   81
1003    medium  12
1003    large   38  
...etc...

此数据包含数百个元组。我最终需要做的是像这样重新组织计数:

ITEM   SMALL   MEDIUM   LARGE
-----------------------------
1001   11      6        34
1002   10      0        23
1003   81      12       38

...等...

请注意,商品 1002,中码没有出现在第一个表中;因此它在第二个表中的值为 0。

有什么建议吗?指针?我认为解决方案是这样的:

SELECT item 'ITEM', if(ITEM=1001 and SIZE=???, SIZE) 'SMALL', ...etc...
FROM t1;

但就我所知。

最佳答案

我的回答(出于所有意图和目的)与@xQbert 相同,但使用“create table as select”将值直接放入新表中。

CREATE TABLE t2 AS
  SELECT
    ITEM,
    SUM(CASE WHEN SIZE = "small" THEN `COUNT` ELSE 0 END) AS "SMALL",
    SUM(CASE WHEN SIZE = "medium" THEN `COUNT` ELSE 0 END) AS "MEDIUM",
    SUM(CASE WHEN SIZE = "large" THEN `COUNT` ELSE 0 END) AS "LARGE"
  FROM t1
  GROUP BY ITEM;

我在 count 周围使用反引号作为它的 mySQL 关键字,虽然不是必需的,但我习惯性地反引号任何看起来像关键字的东西。

关于MySQL - 将一列/三行重组为三列/一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45444622/

相关文章:

ios - NSPredicate和SUBQUERY不起作用

mysql - 从两个不相关的 MySQL 查询中添加总计

PostgreSQL - 使用子查询更新多个列值

mysql - 错误: Subquery returns more than 1 row when trying to insert variables into multiple rows from 2 tables MYSQL

javascript - 如何将用户输入输出到不同的网页?

mysql - 我刚开始使用 MYSQL,但无法找到语法错​​误

javascript - 在xml中调用php变量

mysql - SQL 创建查询并重定向到文件

php - 将图像保存到数据库中无法正常工作

mysql - 无法使用 Node.js 连接 Heroku 上的 ClearDB MySQL