【发布时间】:2019-05-05 12:20:28
【问题描述】:
我有 2 个表,表 A 和表 B。我需要返回表 A 中的所有记录,但如果 ID 存在,我需要将 COL_A 替换为 TABLE_B 中的 COL_A 的最新值。
TABLE_A TABLE_B
ID COL_A A_ID COL_A CREATED_DATE
1 AAA 1 AA1 1/11/18
2 BBB 1 AA2 1/12/18
3 CCC 3 CC1 1/12/18
预期输出:
ID COL_A
1 AA2
2 BBB
3 CC1
我可以使用 Oracle 12c 执行以下操作,但不能在 11g 上执行。需要有关如何查询 11g 的帮助?
select ID,
NVL((select * from (select FIRST_VALUE(COL_A) OVER (ORDER BY CREATED_DATE DESC) from TABLE_B WHERE A_ID=A.ID) where ROWNUM=1),COL_A) AS COL_A
from TABLE_A A
【问题讨论】:
-
我在这里看不到明显的连接条件。你为什么要这样组织你的表格?
-
你可以使用
merge声明 -
@TimBiegeleisen 您将如何重组它们?
-
对于初学者,请在两个表之间创建干净的连接键,这样您就不必使用 SQL Olympics 来完成原本相当简单的查询。
-
@TimBiegeleisen 好的...回到我最初的问题,以我的例子为例,你将如何构建它们?