簡體   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