2017-07-11 9 views
-1

私はこのような私はUNION ALLを使用して、それらを一緒に入れたときに結果を返す2つのテーブルがあります。私がしてはいけないときに列をあいまいに定義する。どうして?

SELECT * FROM TABLE_A 
UNION ALL 
SELECT * FROM TABLE_A 

しかし、私はWITH句にこのコードを追加するときに、以下のように、それは動作しません何らかの理由:

WITH    
SQ_Union AS 
(
    SELECT * FROM TABLE_A 
    UNION ALL 
    SELECT * FROM TABLE_A 
) 
SELECT 
    * 
FROM 
    SQ_Union 

私は次のことを得ることを実行します。

ORA-00918: column ambiguously defined 

両方のテーブルが同じ列、名前持っています同じですが、テーブル名とデータの内容が異なります。なぜこれはWITH句なしで実行され、実行されないのですか?

+0

サンプルでは、​​テーブル 'TABLE_A'が1つしかありません。クエリは正常に動作します。あなたはクエリを確認し、動作していないSQLを提供できますか? – are

+1

エラーメッセージはコード内の特定の行を指しているはずです。その情報も入力してください。 – mathguy

答えて

1

このようにテーブルを作成しました。

create table a (a1 number, b1 number); 
create table b (b1 number, a1 number); 

insert into a values (1, 2); 
insert into b values (3, 4); 
commit; 

WITH    
    SQ_Union AS (
     SELECT * FROM a 
     UNION ALL 
     SELECT * FROM b 
    ) 
SELECT * FROM SQ_Union; 

Oracle 12.1.0.2ではこれを実行できません。あなたが共有していないコードに問題があると思われます。

ところで、上記の文章はMCVEとみなされます。 を作成しようとすると、間違いなく問題の原因を見つけることができます。私の好きなキャラクターの1つを引用するには、「それをゆっくり」。

関連する問題