根据SQL中的行值获取列名称

时间:2017-03-22 21:37:51

标签: sql

我的表格如下:

ID  Col1    Col2    Col3
A   0   1   0
B   1   0   1
C   1   0   1

我想要值为1的列的名称,结果应如下所示:

ID  ColName     
A   Col2        
B   Col1,Col3       
C   Col1,Col2       

请告知我如何获得结果。 谢谢!

2 个答案:

答案 0 :(得分:2)

您可以通过将值连接在一起来完成此操作。这是一种方法:

select id,
       concat( (case when col1 = 1 then 'col1;' else ''),
               (case when col2 = 1 then 'col2;' else ''),
               (case when col3 = 1 then 'col3;' else '')
             )
from t;

这是通用SQL(实际上是ANSI标准)。具体细节可能非常依赖数据库,但这应该给你一般的想法。

答案 1 :(得分:1)

如果是 ORACLE 数据库,

SELECT ID
  , RTRIM (
    DECODE(COL1, 1, 'COL1, ', '') 
      || DECODE(COL2, 1, 'COL2, ', '')  
      || DECODE(COL3, 1, 'COL3 ', '')
    , ',')AS ColName
FROM MY_TABLE