0

私は次のようなデータを持っています

TABLE1
------
A  |B
1  |2
3  |4

TABLE2
------
C  |D
1  |11
2  |12
3  |13
4  |14

期待される出力は

D , D
--------
11, 12
13, 14

この出力の背後にあるロジックは、テーブル 2 の列 C と一致するテーブル 1 の列 A または列 B に対応するテーブル 2 の列 D をビューが常に返すように、ビューを作成する必要があるということです。このビューは、table1 のキーに基づいて Table2 の値を検索するためのルックアップとして機能します。場合によっては、table1 のキーのいずれかが table2 に対応する値を持たない場合、そのペアは報告されません。

データ設定:

CREATE TABLE Table1
    ("A" number, "B" number);

INSERT ALL 
    INTO Table1 ("A", "B")       VALUES (1, 2)
    INTO Table1 ("A", "B")       VALUES (3, 4)
SELECT * FROM dual;

CREATE TABLE Table2
    ("C" number, "D" number);

INSERT ALL 
    INTO Table2 ("C", "D")       VALUES (1, 11)
    INTO Table2 ("C", "D")       VALUES (2, 12)
    INTO Table2 ("C", "D")       VALUES (3, 13)
    INTO Table2 ("C", "D")       VALUES (4, 14)
SELECT * FROM dual;

文字列連結でいくつかの結合を試みましたが、それらはひどいものに見えます。これは実際には Kognitio データベースですが、Oracle 構文のほとんどはここで機能します。こちらも参考にさせていただきました。また、これは DWH 環境であり、このロジックを代理キーに適用します。

4

1 に答える 1

3

単純に 2 回参加したい場合:

select t2a.D, t2b.D
from table1 t2 join
     table2 t2a
     on t1.A = t2a.C join
     table2 t2b
     on t1.B = t2b.C;

の 2 つの異なるエイリアスの使用に注意してくださいtable2。これは、これらがクエリでどのように区別されるかです。

于 2014-08-18T21:45:25.523 に答える