Разбиение 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;

modelling fiddle

→ Ссылка