如果满足某些条件,则连接sql select语句中的列名

如果满足某些条件,则连接sql select语句中的列名,sql,concatenation,Sql,Concatenation,我有一个SQLSELECT语句,其中包含4列: SELECT cmm_residence, cmm_packing, cmm_furniture, cmm_overage 这些列是简单的否/是值(0,1)。我需要一个附加列Description来连接该行的任何“Yes”值 例如:如果查询为cmm\u住宅和cmm\u家具返回“是”,则说明列应为cmm\u住宅,cmm\u家具,您可以在SELECT语句中使用案例,添加您需要的任何逻辑,如下所示: SELECT cmm_residence, cmm_

我有一个SQL
SELECT
语句,其中包含4列:

SELECT cmm_residence, cmm_packing, cmm_furniture, cmm_overage
这些列是简单的否/是值(0,1)。我需要一个附加列
Description
来连接该行的任何“Yes”值


例如:如果查询为
cmm\u住宅
cmm\u家具
返回“是”,则
说明
列应为
cmm\u住宅,cmm\u家具

,您可以在SELECT语句中使用案例,添加您需要的任何逻辑,如下所示:

SELECT cmm_residence, cmm_packing, cmm_furniture, cmm_overage, 
CASE
    WHEN cmm_residence = 1 THEN 'cmm_residence'
    WHEN  cmm_packing = 1  THEN 'cmm_packing'
    ELSE ''
END As 'Description' 
FROM Table

只需添加任意数量的逻辑案例,考虑到这不是一个性能很好的查询。

Schema和insert语句:

 create table  mytable (cmm_residence varchar(5), cmm_packing varchar(5), cmm_furniture varchar(5), cmm_overage varchar(5));
 insert into mytable values('yes','no','no','yes');
 insert into mytable values('no','no','no','yes');
 insert into mytable values('yes','yes','no','yes');
查询:

 select cmm_residence, cmm_packing, cmm_furniture, cmm_overage,
 concat(case when cmm_residence='yes' then ' cmm_residence ,'end,
 case when cmm_packing='yes' then ' cmm_packing ,'end,
 case when cmm_furniture='yes' then ' cmm_furniture ,'end,
 case when cmm_overage='yes' then ' cmm_overage 'end)Description
 from mytable
输出:

cmm_公寓 三坐标测量机包装 cmm_家具 三坐标测量机过剩 描述 对 不 不 对 cmm_公寓,cmm_超龄公寓 不 不 不 对 三坐标测量机过剩 对 对 不 对 cmm_住宅、cmm_包装、cmm_超龄
到目前为止你试过什么?您的查询有什么问题?您使用的是哪种dbms?我了解Concat函数是如何工作的,我只是不知道如何将该函数转换为utlize Case。下面的另一位用户帮助我澄清了一些问题。仍然在摸索学习SQL。谢谢你的回复,我很感激。正是我所需要的,谢谢!这也行,谢谢!