Ближе всего к тому, что вы хотите, без использования динамического SQL, был бы запрос на объединение:
SELECT id, value, 1 AS pos FROM A WHERE id = 1 UNION ALL
SELECT id, value, 2 FROM A WHERE id = 3 UNION ALL
SELECT id, value, 3 FROM A WHERE id = 2 UNION ALL
SELECT id, value, 4 FROM A WHERE id = 3 UNION ALL
SELECT id, value, 5 FROM A WHERE id = 3 UNION ALL
SELECT id, value, 6 FROM A WHERE id = 1
ORDER BY pos;
Примечание: вам не нужен подзапрос для создания требуемого порядка.
Я подозреваю, что вы ищете способ сгенерировать некоторое количество записей в наборе результатов на основе состояния, содержащегося в таблице. SQL является декларативным языком и не очень хорош в создании новых данных. Ваше бизнес-приложение обычно это делает. Таким образом, многословность вышеприведенного запроса на объединение возникает из-за того, что SQL не имеет четких формулировок при генерации данных.