Как преобразовать строки в столбцы, не имеющие столбца с уникальными значениями? - PullRequest
0 голосов
/ 12 июля 2011

Я пытаюсь преобразовать некоторые строки в столбцы в MySQL.Я знаю, что об этом уже спрашивали и отвечали, например, здесь .

Моя проблема в том, что в моих строках нет ничего, к чему я мог бы применить конструкцию «если».(По крайней мере, я так думаю.) Например, для следующего ввода

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 Ответ

1 голос
/ 12 июля 2011

Что ж, если у вас нет представления о том, сколько столбцов будет в вашей сводной таблице, и у вас нет значения, чтобы определить, какое значение должно входить в данный столбец, лучшее решение, которое я могу порекомендовать, - это использоватьGROUP_CONCAT, а затем выполнить синтаксический анализ в вашем коде:

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