У меня относительно простая проблема (я думаю), но я не могу понять это. У меня есть один столбец с 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, но не думаю, что это сработает.
Без дубликатов, без пропусков, 1..200. Звучит как постоянная таблица, зачем выводить ее из другой таблицы?
Число будет меняться по мере добавления новых записей с течением времени.


Мы можем попробовать сводный запрос, в котором группа определяется как столбец минус один, разделенный на 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;
Это прекрасно работает. Большое спасибо за предоставленный мне рабочий пример. А+
Используйте сводку и добавьте случай, основанный на условии, таком как значение% 5, и сопоставьте его с соответствующими целевыми столбцами.