我有两个视图(A和B),这两个视图都有Inquirey_no,Revision_no,Total作为列。我总是先查询视图A,如果视图A没有返回任何行,我想查询第二个视图(B)并获得结果。
我试着跟踪,但它给了我错误。
SELECT
CASE
WHEN a.inquiry_no is NULL THEN b.inquiry_no
ELSE a.inquiry_no
END inquiry_no,
CASE
WHEN a.revision_no is NULL THEN b.revision_no
ELSE a.revision_no
END revision_no,
CASE
WHEN a.total is NULL THEN b.total
ELSE a.total
END total
FROM A a, B b
如果视图A有记录,它应该从查询中获取,如果只有视图A没有记录,那么我想从视图B中获取记录。
有人能帮我一下吗?
使用结果集编辑:
假设testa有以下内容。
查询_无修订版_无总计
1 2 3
testb有以下内容
查询_无修订版_无总计
100 200 300
如果我加上如下的where条件,预期的结果如下。
1.其中inquiry_no = 1 -> 1 2 3
1.其中inquiry_ no = 100 -> 100 200 300
1.其中inquiry_no = 11 ->未找到记录
能帮我拿一下吗?
1条答案
按热度按时间7uzetpgm1#
一个选项是
UNION
从两个表中选择,使用exists
(从testa
中选择时)和not exists
(从testb
中选择时)。最初,两个表都有数据,这意味着查询应该只从
testa
中选择:查询方式:
让我们从
testa
中删除行:再试一次;结果现在应该来自
testb
:当你用
plsql
标记这个问题时,让我们切换到它:初始样本数据:
测试:
[编辑],基于附加说明和样本数据以及预期结果。
稍微修改的查询,在两个表中搜索
inquiry_no
。如果testa
中存在testb
中的行,则not exists
将删除这些行。测试: