Вы можете думать о переменных типа запроса как о представлении операторов выбора или представлений, поэтому ваш первый подход расширяется до чего-то вроде:
q_3 QUERY(a INT, b INT) = (SELECT 1, 2) as q_1 + (SELECT 2, 3) as q2;
А ваш второй подход расширяется до чего-то вроде:
q_3 QUERY(a INT, b INT) = (SELECT 2, 3) as q_2 + UNION SELECT 9, 10;
ни один из которых не является допустимым оператором выбора SQL.
Возможно, вы захотите что-то вроде:
q_3 QUERY(a INT, b INT, c INT, d INT) = SELECT * FROM q_1 JOIN q_2;
, которое создаст 4-столбцовую переменную типа QUERY со столбцами q_2
добавлено к столбцам q_1
.
Или что-то вроде:
q_3 QUERY(a INT, b INT) = SELECT* FROM q_1 UNION ALL SELECT * FROM q_2;
, что создаст переменную типа QUERY с двумя столбцами для строк q_2
, добавленных к строкам q_1