我希望查询执行此操作。
if parameter5 is not null then
select parameter1 from table where request_id = (select parameter5 from table)
if parameter is null then
select parameter1 from table
parameter5包含parent的请求id。如果parameter5不为null,那么我需要父request的parameter1的值。如果parameter5为null则我需要parameter1的值。
parameter1 | parameter5 | request_id
-----------|------------|------------
null | abc | 123
123 | bcd | 234
null | xyz | 456
说,表格看起来像这样。对于request_id 234,显示的参数5值应为' abc'。对于request_id 456,显示的参数5值应该是' xyz'
如何检查空状态并获取适当的值。
答案 0 :(得分:1)
如果我理解你的需要,你可能需要:
select t1.request_id, coalesce(t2.parameter5, t1.parameter5)
from yourTable t1
left outer join yourTable t2 on ( t1.parameter1 = t2.request_id)
使用您的样本数据,结果将是:
REQUEST_ID COA
---------- ---
234 abc
456 xyz
123 abc
答案 1 :(得分:0)
这很难说,因为你对问题的描述有几个内部矛盾。 (这是一种花哨的方式来说“它毫无意义。”)但是,猜测你发布的内容,也许这就是你所需要的:
select request_id,
case when parameter1 is null then parameter5
else (select parameter5 from tbl where request_id = t.parameter1)
end as requested_value
from tbl t
;
其中tbl
是您的表名称(不能是table
,因为这是保留字)。
答案 2 :(得分:0)
with test_query as(
select 123 parameter1,'bcd' parameter5,234 request_id from dual
union all
select null , 'abc' , 123 from dual
union all
select null, 'xyz',456 from dual
)
select parameter5,nvl(prior request_id,request_id)
from test_query
where parameter1 is null
connect by prior parameter1=request_id