2017-11-08 10 views
0

おはよう、ユニオンOracle SQLクエリにフラグ列を追加しますか?

私の最新のデータ苦境は、Oracle SQLユニオンクエリ内のフラグの列に追加する必要が私を必要とします。クエリ構文は簡単です:したがって、私が探していますことはあり

SELECT 
    tblA.* 
FROM tblA 
    INNER JOIN tblB ON tblA.fldA = tblB.fldA 

UNION ALL 

SELECT 
    tblA.* 
FROM tblA 
    INNER JOIN tblB on tblA.fldA = tblB.fldB 

:連合でそれをクエリのIFフラグがあるために行は、後半(INNER JOIN tblB on tblA.fldA = tblB.fldB)から来ています。私は、 "Flag"という列を追加し、Unionクエリの2番目の部分から来た場合は "Y"を表示すると思います。

これは達成可能ですか?

また、私はすぐに応答しないことをお詫び申し上げます。私は数時間インターネットなしになります。私は勉強を続けるとどんな洞察力にも感謝して歓迎するでしょう:)事前にありがとう!

答えて

1

これは意味ですか?

SELECT 
    tblA.*, 'N' as FLAG 
FROM tblA 
    INNER JOIN tblB ON tblA.fldA = tblB.fldA 

UNION ALL 

SELECT 
    tblA.*, 'Y' as FLAG 
FROM tblA 
    INNER JOIN tblB on tblA.fldA = tblB.fldB 
+0

は、この場合のデータ型FLAG、別名かですか?後で参照するサブクエリにこの共用体を入れるつもりなら、 "FLAG"を列名として参照することができますか、それともその列のデータ型ですか? – bm0r3son

+0

ご協力いただきありがとうございます! – bm0r3son

1

だけ列を追加します。

SELECT tblA.*, 'from first part' as flag 
FROM tblA 
    INNER JOIN tblB ON tblA.fldA = tblB.fldA 

UNION ALL 

SELECT tblA.*, 'from second part' 
FROM tblA 
    INNER JOIN tblB on tblA.fldA = tblB.fldB 
+0

はこの場合のFLAGデータ型ですか、エイリアス名ですか?後で参照するサブクエリにこの共用体を入れるつもりなら、 "FLAG"を列名として参照することができますか、それともその列のデータ型ですか? – bm0r3son

+1

それはその列のエイリアスです –

+0

ありがとう!これは完全に機能しました。私はそれが簡単だろうとは知らなかった。それを私に説明してくれてありがとう。 – bm0r3son

1

私は、テーブルBがFLDA = FLDBのレコードを持っている場合は特に、テーブルAの追加のスキャンが最良の方法であることはよく分かりません。おそらくあなたはこのような何かを必要としています

select 
    a.*, 
    decode(a.fldA, b.fldA, 'Y', 'N') first_match, 
    decode(a.fldA, b.fldB, 'Y', 'N') second_match 
from tblA a 
inner join tblB b on (a.fldA in (coalesce(b.fldA, -1), coalesce(b.fldB, -1))) 
関連する問題