2012-07-17 104 views
0

我的列是一个子查询的结果,我想分配一个列别名字段是从另一个查询中提取的,但我不能。Oracle 10g - 来自查询的别名列

携带例如不工作:

SELECT field1, 
     field2, 
       (SELECT FROM mytable WHERE COND1 aa) as [SELECT name FROM MyTable WHERE cond2] 
    FROM table1 

这可能吗? 谢谢

+3

不可能直到您使用动态SQL – Madhivanan 2012-07-17 13:16:35

+3

作为建议的@Madhivanan,你可以使用动态SQL,但我会问你为什么要做到这一点,也许你可以实现你以不同的方式所需要的功能。 – Ollie 2012-07-17 15:02:41

+1

并且根据'cond2'是否比较'myTable'和'table1'(基于行的)之间的东西,这对于动态SQL来说也是不可能的。 – 2012-07-17 15:49:06

回答

0

在某些情况下(不包括X-Zero提到的ons),您可以使用多个查询和动态SQL来实现。

DECLARE 
    v_alias VARCHAR2(30); 
    v_query_alias VARCHAR2(1000); 
BEGIN 
    SELECT name 
    INTO v_alias 
    FROM MyTable 
    WHERE cond2; 

    EXECUTE IMMEDIATE 'SELECT field1 
          ,field2 
          ,(SELECT FROM mytable WHERE COND1 aa) as '||v_alias||' 
        FROM table1'; 
END; 
/