Это полностью протестировано, попробуйте здесь: https://rextester.com/DVZXO21058
Настройка таблицы, как вы описали:
CREATE TABLE myTable (id INT, idnew INT);
INSERT INTO myTable (id, idnew)
VALUES (1, 2),
(3, 4),
(2, NULL),
(4, 7),
(6, 8),
(7, NULL);
SELECT * FROM myTable;
Вот запрос для выполнения трюка:
SELECT mixed_id FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS row_num,
id,
idnew
FROM myTable
) AS x
UNPIVOT
(
mixed_id for item in (id, idnew)
) AS y
WHERE mixed_id IS NOT NULL
ORDER BY row_num, mixed_id;
Чтобы не усложнять запрос, используется преимущество «id», которое ранжируется перед «idnew» как строка.Я считаю, что ранжирование строк здесь не является ключевым вопросом.