select status_a,status_b from test
Run Code Online (Sandbox Code Playgroud)
如果使用oracle解码函数a和如果status_a或status_b的值之一为null status_a,则如何解码status_b.
if status_a='Y' and status_b='Y' then 'Y'
if status_a='Y' and status_b='N' then 'N'
if status_a='N' and status_b='Y' then 'N'
if status_a='N' and status_b='N' then 'N'
Run Code Online (Sandbox Code Playgroud)
问候,
Chaituhara
你为什么要用DECODE? CASE看起来更合适
CASE WHEN status_a = 'Y' and status_b = 'Y' THEN 'Y'
WHEN status_a = 'Y' and status_b = 'N' THEN 'N'
WHEN status_a = 'N' and status_b = 'Y' THEN 'N'
WHEN status_a = 'N' and status_b = 'N' THEN 'N'
END
Run Code Online (Sandbox Code Playgroud)
当然,你发布的逻辑似乎没有意义.status_a = 'Y' or status_b = 'Y'在status_a = 'Y' or status_b = 'N'评估为TRUE时评估为FALSE 的唯一方法是if status_a = 'N'和status_b = 'N'.但这意味着永远不会达到第三和第四个分支.如果你的意思and不是or,逻辑就会有意义.但在这种情况下,你可以简化它
CASE WHEN status_a = 'Y' and status_b = 'Y' THEN 'Y'
ELSE 'N'
END
Run Code Online (Sandbox Code Playgroud)