使用oracle decode解码两个值

use*_*658 3 oracle

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

Jus*_*ave 6

你为什么要用DECODECASE看起来更合适

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)