我正在尝试将某些行转换为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中完成吗?如果是的话,有人可以帮我吗?
答案 0 :(得分:1)
好吧,如果你不知道你的数据透视表中有多少列,也没有值来决定给定列中应该有哪个值,我建议的最佳解决方案是使用GROUP_CONCAT函数,然后在代码中进行一些解析:
SELECT d.user_id, GROUP_CONCAT(
d.value SEPARATOR ','
) AS val
FROM details d
GROUP BY d.user_id;