繁体   English   中英

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

[英]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_residencecmm_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM