[英]Concatenate column names in sql select statement if certain condition is met
我有一个 SQL SELECT
语句拉 4 列:
SELECT cmm_residence, cmm_packing, cmm_furniture, cmm_overage
这些列是简单的否/是值 (0,1)。 我需要一个额外的列Description
来连接该行的任何“是”值。
例如:如果查询为cmm_residence
和cmm_furniture
返回“是”,则Description
列应为cmm_residence,cmm_furniture
。
模式和插入语句:
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
Output:
cmm_residence | cmm_packing | cmm_家具 | cmm_overage | 描述 |
---|---|---|---|---|
是的 | 不 | 不 | 是的 | cmm_residence, cmm_overage |
不 | 不 | 不 | 是的 | cmm_overage |
是的 | 是的 | 不 | 是的 | cmm_residence、cmm_packing、cmm_overage |
db<小提琴在这里
您可以在 SELECT 语句中使用 CASE ,添加您需要的任何逻辑,如下所示:
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
只需根据需要添加尽可能多的逻辑案例,考虑到这不是很高效的查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.