我有一张这样的桌子
ID NTYPE
1 0
2 0
3 1
4 2
我需要选择一个选项,以根据NTYPE的列表(从1到N)获取所有ID,但是如果不存在任何NTYPE列表,则获取NTYPE = 0的位置。
例如:
我可以创建一个可以执行此操作的过程,但是我希望在选择时执行
有可能吗?有想法吗?
答案 0 :(得分:0)
您要使用要查找的ntypes构造派生表。然后,您可以将其与所需的逻辑一起使用。这是一个版本:
with n as (
select 1 as ntype from dual union all
select 2 as ntype from dual
)
select t.*
from t
where t.ntype in (select ntype from n)
union all
select t.*
from t
where t.ntype = 0 and
exists (select 1
from n
where not exists (select 1 from t where t.ntype = n.ntype)
);