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