我有三张桌子,分别是TabA、TabB和TabC.以下是这些表中的一些有用列:
TabA(ID VARCHAR2 Primary Key, ..)
TabB(ID VARCHAR2, Value CHAR(1), LastUpdated Date)
TabC(ID VARCHAR2 Primary Key, Value CHAR(1), LastUpdated Date)
这里Value
是一个标志"Y"或"N".我想使用这3个表获得所有ID
及其Value
.首先,我想查看所有表中存在的所有不同的ID
.由于Value
不在TabA中,我将只在TabB和TabC中查找Value
.如果对于一个特定的ID
,Value
不在任何表中,我将假定它为"N".假设对于一个特定的ID
,值在TabB和TabC中,我想取Value
,其中LastUpdated
更大.
我try 过使用循环,但这不是非常有效的解决方案.我只需要结果游标中的Key
和Value
,并希望为此保留一个查询.
有人能帮忙找出一个比使用循环更好的解决方案吗.
编辑-
以下是一个示例:
假设塔巴是-
ID |
---|
100 |
101 |
102 |
选项卡B
ID | Value | LastUpdated |
---|---|---|
99 | Y | 21-May-22 |
100 | N | 22-May-22 |
103 | N | 23-May-22 |
TabC是-
ID | Value | LastUpdated |
---|---|---|
102 | Y | 20-May-22 |
103 | Y | 24-May-22 |
104 | N | 21-May-22 |
结果应该是-
ID | Value | Why? |
---|---|---|
99 | Y | from TabB |
100 | N | from TabB |
101 | N | In TabA only so defaulting N |
102 | Y | from TabC |
103 | Y | In TabB and TabC but LastUpdated is greater in TabC so taking TabC value |
104 | N | from TabC |
编辑-
如果ID在TabB和TabC中具有相同的LastUpdated,但值不同,则会出现预期结果-这可以忽略,因为这种情况很少见.我们可以假设这永远不会发生.