Разделить 1 столбец на 5 столбцов

У меня относительно простая проблема (я думаю), но я не могу понять это. У меня есть один столбец с 200 записями. Значения строк представляют собой список чисел от 1 до 200 (без дубликатов). Я хотел бы организовать числа в 5 столбцах с данными, отсортированными по горизонтали (по возрастанию AZ). Пример:

Original table:
Column1
1
2
3
4
5
6
7
8
...and so on to 200

Результат просмотра должен выглядеть так:

|Col1|Col2|Col3|Col4|Col5|
   1    2    3    4    5
   6    7    8    9   10
   11   12  ...an so on to 200

Я изучил PIVOTING, но не думаю, что это сработает.

Используйте сводку и добавьте случай, основанный на условии, таком как значение% 5, и сопоставьте его с соответствующими целевыми столбцами.

fiveelements 27.07.2019 18:24

Без дубликатов, без пропусков, 1..200. Звучит как постоянная таблица, зачем выводить ее из другой таблицы?

Serg 27.07.2019 18:42

Число будет меняться по мере добавления новых записей с течением времени.

Cobra 28.07.2019 19:04
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
203
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мы можем попробовать сводный запрос, в котором группа определяется как столбец минус один, разделенный на 5. Это помещает первые пять записей в первую группу/строку, следующие пять — во вторую группу/строку и так далее. Затем мы поворачиваемся к каждому значению Column1 % 5, чтобы определить, в какой из пяти столбцов войдет каждое значение.

SELECT
    MAX(CASE WHEN Column1 % 5 = 1 THEN Column1 END) AS Col1,
    MAX(CASE WHEN Column1 % 5 = 2 THEN Column1 END) AS Col2,
    MAX(CASE WHEN Column1 % 5 = 3 THEN Column1 END) AS Col3,
    MAX(CASE WHEN Column1 % 5 = 4 THEN Column1 END) AS Col4,
    MAX(CASE WHEN Column1 % 5 = 0 THEN Column1 END) AS Col5
FROM yourTable
GROUP BY
    (Column1 - 1) / 5;

Демо

Это прекрасно работает. Большое спасибо за предоставленный мне рабочий пример. А+

Cobra 27.07.2019 18:50

Другие вопросы по теме