Oracle 子查询列别名语法?

Cad*_*oux 4 oracle oracle-10g

我有类似的东西:

SELECT a, b
INTO v_a, v_b
FROM (
    SELECT x, y
    FROM whatever
    UNION
    SELECT z, w
    FROM something
) AS subquery (a, b)
Run Code Online (Sandbox Code Playgroud)

这当然在 Oracle 中不起作用(该语法 - 除了 INTO 和可选的 AS)在 SQL Server 中会很好http://sqlfiddle.com/#!6/b7dcf/1

是否有替代方法(这需要我将别名放在里面),其中列别名在外面:

SELECT a, b
INTO v_a, v_b
FROM (
    SELECT x AS a, y AS b
    FROM whatever
    UNION
    SELECT z, w
    FROM something
) subquery;
Run Code Online (Sandbox Code Playgroud)

http://sqlfiddle.com/#!6/c12e1/1 - 当然适用于 SQL Server 和 Oracle

我反对内部锯齿的原因是它不利于维护,显然,如果在该部分上方添加新部分,则锯齿会受到打击。

小智 5

考虑使用在WITH外部具有子查询SELECT并具有更好的可维护性的语法:

WITH subquery (a, b) AS 
(
    SELECT x, y FROM whatever
    UNION
    SELECT z, w FROM something
) 
SELECT a, b FROM subquery;
Run Code Online (Sandbox Code Playgroud)

...在 Oracle 11.2 上运行,根据:http : //sqlfiddle.com/#!4/d0b42/2/0