2016-03-19 14 views
0

私はうまく動作する次のクエリを持っています。like like operator to outside SELECT

SELECT A.* 
FROM 
(
    SELECT 'ABC','DEF' FROM DUMMY 
    UNION ALL 
    SELECT col1,col2 FROM DUMMY 
) A; 

ネストされたクエリによって返された最初の列にlikeキーワードを適用したいとします。私は以下を試した:

SELECT col1, col2 
FROM 
(
    SELECT 'ABC','DEF' FROM DUMMY 
    UNION ALL 
    SELECT col1,col2 FROM DUMMY 
) A 
WHERE COL1 LIKE 'A%'; 

しかし、上記のクエリは機能しませんでした。 ORA-00904: "COL1":識別子が無効です。

次のように同じのためのフィドルのリンクは次のとおりです。http://sqlfiddle.com/#!4/1c54b/7

誰もが、私は同じことを達成することができますどのように私を導くことができますか?

編集:また、既存のテーブルからも列を取得しようとしています。

ありがとうございます。

答えて

1
  • ユニオンを使用する場合は、両方のテーブルで列名またはエイリアスを一致させる必要があります。
  • すでに定義されている列名とエイリアスを呼び出すことができます。

列の別名(COL1として 'ABC')を定義することを忘れないでください

SELECT col1, col2 
FROM 
(
    SELECT 'ABC' as col1,'DEF' as col2 FROM DUMMY 
    UNION ALL 
    SELECT 'GHI' as col1,'JKL' as col2 FROM DUMMY 
) A 
WHERE COL1 LIKE 'A%'; 

私はあなたのような何かをしようとしていると思います。

SELECT col1, col2 
FROM 
(
    SELECT col1,col2 FROM DUMMY 
    UNION ALL 
    SELECT col1,col2 FROM DUMMY2 
) A 
WHERE col1 LIKE 'A%'; 

here

+0

上の私から別のサンプルを見ては、エイリアス名なしで同じことを達成することが可能ですがありますか? –

+0

あなたは本当に 'ABC'と 'DEF'を手動で与える必要がありますか? –

+0

こんにちは@Yusuf、私は私の質問を編集しました。私はまた、テーブルにも存在する列を取得しようとしています。実際には私の主なクエリはサブクエリ部分(角括弧の中にある部分)を含んでいます。サブクエリは別のテーブルの列からの出力であるため、エイリアス名を使用してクエリを編集すると問題になるため、類似のキーワードを使用するために外部クエリが追加されました。 –