Учитывая возврат от
SELECT 'x' AS register
, 'y' AS simulation
, 'z' AS hasLimit
, 'w' AS approved
Мы можем заключить это в набор символов и ссылаться на него как на встроенное представление во внешнем запросе.
Например:
SELECT CASE i.n
WHEN 1 THEN 'register'
WHEN 2 THEN 'simulation'
WHEN 3 THEN 'hasLimit'
WHEN 4 THEN 'approved'
END AS col1
, CASE i.n
WHEN 1 THEN q.register
WHEN 2 THEN q.simulation
WHEN 3 THEN q.hasLimit
WHEN 4 THEN q.approved
END AS col2
FROM (
SELECT 'x' AS register
, 'y' AS simulation
, 'z' AS hasLimit
, 'w' AS approved
) q
CROSS
JOIN ( SELECT 1 AS n
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
) i
ORDER
BY i.n
Это выглядит немного странно, учитывая, что у вас уже есть подзапросы, возвращающие скалярные значения, мы могли бы объединить их с UNION ALL
операторами набора
SELECT 'register' AS col1, ( scalar_subquery_for_x ) AS col2
UNION ALL
SELECT 'simulation' , ( scalar_subquery_for_y )
UNION ALL
SELECT 'hasLimit' , ( scalar_subquery_for_z )
UNION ALL
SELECT 'approved' , ( scalar_subquery_for_w )
ЕСЛИ нам нужен гарантированный заказ, мы можем обернуть все это в скобки и добавить предложение ORDER BY. (Без ORDER BY мы наблюдаем, что строки возвращаются «по порядку» из UNION ALL
, но такое поведение не гарантируется.)