Нужно разложить столбец на несколько столбцов на основе уникальных значений в таблице? - PullRequest
0 голосов
/ 04 сентября 2018

Пожалуйста, помогите мне с подходящими способами сделать это в Excel и SQL / Redshift.

Итак, предположим, у меня есть таблица типа:

Original Table

Я хочу разложить этот столбец 5 на столько столбцов, сколько уникальных значений в этом столбце, и поместить соответствующее значение столбца 6 в строки. В основном я хочу только одну строку для уникальной пары [column1, column2, column3]. Итак, я хочу результат как:

Required Table

1 Ответ

0 голосов
/ 04 сентября 2018

Простой способ SQL сделать это - использовать MAX() вместе с CASE ...

SELECT
  column1,
  column2,
  column3,
  column4,
  MAX(CASE WHEN column5 = 'val1' THEN column6 END)   AS val1,
  MAX(CASE WHEN column5 = 'val2' THEN column6 END)   AS val2,
  MAX(CASE WHEN column5 = 'val3' THEN column6 END)   AS val3
FROM
  yourTable
GROUP BY
  column1,
  column2,
  column3,
  column4

В выражениях CASE, если column5 не совпадает, результат CASE неявно NULL.

Затем в MAX() любые значения NULL фактически игнорируются.

В результате комбинация выбирает наибольшее значение column6, где column5 равно val1 / val2 / val3. Предполагая, что существует только одно такое совпадение, оно выбирает одно совпадающее значение.

...