首页 > 解决方案 > 合并后从两个表中过滤一个值

问题描述

第一:说这个帖子和url有关

第二:如果你看到下一张图片:图片

我想过滤一个ID。如果我转到表 2 并使用 id 查看我的记录,这很简单,但问题是,我需要表 1 中的一些信息,而表 2 中没有这些信息

将其显示为表格。

第三:如果我的表 2 是空的,当我通过 654 id 过滤时,我的查询必须从表 1 中获取所有信息

所以我不知道如何开始......有人可以再次帮助我吗?我试过这个:

SELECT f.id_hist, f.producto, f.price
FROM TABLE(fnc_historical('JAP')) f
WHERE f.id_hist IN
(SELECT DISTINCT f.id_hist
FROM TABLE(fnc_historical('JAP')) f
    inner join new_table g on (f.id_new = g.id_hist)
    where f.id_new = 654
)
UNION
SELECT f.id_hist, f.producto, g.new_price
FROM TABLE(fnc_historical('JAP')) f
    inner join new_table g on (f.id_new = g.id_hist)
where f.id_new = 654

但此代码返回两条记录,值为 40 和 25

问候

标签: sqloracleplsqloracle-apex

解决方案


看起来你需要一个带有合并函数的左连接(它获取第一个值的值,如果它为空,那么它获取第二个值)

SELECT f.id_hist, f.producto, f.place, COALESCE(g.price,f.price) as price
FROM TABLE(fnc_historical('JAP')) f
LEFT JOIN new_table g on (f.id_new = g.id_hist)
WHERE f.id_hist = 654

推荐阅读