如何将行转换为没有具有唯一值的列的列?

时间:2011-07-12 14:28:32

标签: mysql database pivot pivot-table

我正在尝试将某些行转换为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中完成吗?如果是的话,有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

好吧,如果你不知道你的数据透视表中有多少列,也没有值来决定给定列中应该有哪个值,我建议的最佳解决方案是使用GROUP_CONCAT函数,然后在代码中进行一些解析:

SELECT d.user_id, GROUP_CONCAT(
    d.value SEPARATOR ','
  ) AS val
FROM details d
GROUP BY d.user_id;