【问题标题】:CONCATENATE a CASE in Oracle SQL在 Oracle SQL 中连接一个 CASE
【发布时间】:2013-10-03 01:50:32
【问题描述】:

我需要在多个列上运行CASE 表达式,这些列是布尔值,所以如果它是 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

这甚至可以做到吗?如果不是这种方式,还有其他方式吗?

【问题讨论】:

  • 以上是不是给你报错了?在概念上似乎有效,但我对 oracle 了解不多,我认为只需要CASE 语句之间的||

标签: sql oracle concatenation case


【解决方案1】:

是的,它会起作用(如果你清理了语法)。这是一个简单的例子:

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

【讨论】:

    猜你喜欢
    • 2012-01-08
    • 2017-09-09
    • 2012-06-23
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 2019-11-13
    相关资源
    最近更新 更多