我需要在许多列上运行CASE
表达式,这些列是 bool 值,所以如果它是0,我需要用列名填充列,如果它是1,我会忽略列/值。然后我需要将所有这些列连接成一列。可以在 Oracle SQL 中执行此操作吗?
我已经尝试过这个:
Select
||CASE
WHEN COL_A = 0 THEN 'COL_A'
ELSE ''
END||','
||CASE
WHEN COL_B = 0 THEN 'COL_B'
ELSE ''
END||
from ABC.123
这能做到吗?如果不行还有其他方法吗?
最佳答案
是的,它会起作用(如果你清理语法)。这是一个简单的例子:
with q as (
select 0 col_a, 1 col_b, 'Rec 1' id from dual
union all
select 1, 0, 'Rec 2' from dual
union all
select 0, 0, 'Rec 3' from dual
)
Select id,
CASE
WHEN COL_A = 0 THEN 'COL_A'
ELSE ''
END||','
||CASE
WHEN COL_B = 0 THEN 'COL_B'
ELSE ''
END "TheString"
from q
结果:
ID TheString
------- -------------------
Rec 1 COL_A,
Rec 2 ,COL_B
Rec 3 COL_A,COL_B
关于sql - 在 Oracle SQL 中连接 CASE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19039338/