Разбиение 1 столбца на 2 столбцы (не добавлял строку в второй столбец) sqlite
Запрос разбивает на два столбца, но если не четное количество строк в столбце который разбиваем то он копирует последнюю строку (пример вывода).
Как сделать запрос чтобы он не копировал (добавлял) строку?
К примеру чтобы было пусти (null) или вообще не было.
Запрос:
SELECT min(teacher_name) AS name_1, max(teacher_name) AS name_2
FROM (SELECT teacher_name, row_number() OVER (ORDER BY added_time) - 1 AS seqnum
FROM saved_teachers WHERE user_id = ?
)
GROUP BY seqnum / 2
Пример вывод:
name_1 | name_2
тест11 | тест22
тест33 | тест44
тест55 | тест55 - (копия)
Ответы (1 шт):
Автор решения: Akina
→ Ссылка
WITH cte AS (
SELECT teacher_name, ROW_NUMBER() OVER (ORDER BY added_time) - 1 rn
FROM saved_teachers
WHERE user_id = ?
)
SELECT MIN(CASE WHEN rn % N = 0 THEN teacher_name END) column_1,
MIN(CASE WHEN rn % N = 1 THEN teacher_name END) column_2,
-- ...
MIN(CASE WHEN rn % N = N-1 THEN teacher_name END) column_N
FROM cte
GROUP BY rn / N;