我有如下数据
TABLE1
------
A |B
1 |2
3 |4
TABLE2
------
C |D
1 |11
2 |12
3 |13
4 |14预期输出是
D , D
--------
11, 12
13, 14这个输出背后的逻辑是,我需要创建一个视图,这样视图总是返回与A列对应的table2列D或table1与table2列C匹配的B列。此视图将充当查找,根据Table2中的键查找table1中的值。如果在这种情况下,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语法都在这里工作。我还提到了this,但没有任何用处。这也是一个DWH环境,我们在代理键上应用了这个逻辑。
发布于 2014-08-18 21:45:25
你只想加入两次:
select t2a.D, t2b.D
from table1 t2 join
table2 t2a
on t1.A = t2a.C join
table2 t2b
on t1.B = t2b.C;注意,table2使用了两个不同的别名。这是如何在查询中区分这些内容的。
https://stackoverflow.com/questions/25372476
复制相似问题