【发布时间】:2011-07-12 14:28:32
【问题描述】:
我正在尝试将一些行转换为 MySQL 中的列。我知道以前有人问过并回答过,比如here。
我的问题是,我的行中没有可以应用“if”构造的内容。 (至少我是这么认为的。) 例如。对于以下输入,
2 5 1000
2 6 2000
我可以运行这个查询:
INSERT INTO SUMMARY
(user_id,valueA,valueB)
SELECT d.user_id,
MAX(CASE WHEN d.code = 5 THEN d.value ELSE NULL END),
MAX(CASE WHEN d.code = 6 THEN d.value ELSE NULL END),
FROM DETAILS d
GROUP BY d.user_id
并得到这个输出:
2 1000 2000
但我的问题是,我的输入是这样的:
2 6 1000
2 6 2000
(第二列中的值不是唯一的。) 我仍然需要相同的输出,即:
2 1000 2000
可以在 MySQL 中完成吗?如果是,有人可以帮我解决这个问题吗?
【问题讨论】:
-
能否提供您的表格的 DDL 脚本?你知道给定的“user_id”会有多少个“值”,即最终结果集中有多少列?或者它是一个随机数?在您的示例中,您怎么知道 1000 必须在第一列,2000 在第二列?
-
好吧,我不确定,但现在我们可以假设每个 user_id 最多有 10 行。
标签: mysql database pivot pivot-table