MS sql在select中组合列

时间:2013-10-16 07:08:05

标签: sql sql-server

我正在尝试将多个列(varchar,但用于存储布尔'Y'或'')组合成一个带有人类可读文本的列(列表)。

表格布局如下:

MEMBER_ID (int) | PROC (varchar) | 50K_12_MTHS (varchar) | 100K_12_MTHS (varchar)
1||||
2|Y|Y||
3|Y|Y|Y|
4|Y|||

对于我想要获得的样本的输出:

1|
2|Proc, 50
3|Proc, 50, 100
4|Proc

我认为这样做的方法是使用Case(见下文)但无法使其工作。

SELECT
MEMBER_ID,
Gorup =
Select(
CASE PROC
  WHEN 'Y'
  THEN 'Proc'
END  + ', ' +
CASE 50K_12_MTHS
  WHEN   'Y'
  THEN '50K'
END--  + ', ' +
CASE 100K_12_MTHS
  WHEN 'Y'
  THEN '100K'
END  + ', ' +)
from Members

2 个答案:

答案 0 :(得分:0)

近...!

SELECT
MEMBER_ID,
CASE [PROC]
  WHEN 'Y' THEN 'Proc, '
  ELSE ''
END +
CASE [50K_12_MTHS]
  WHEN 'Y' THEN '50K,'
  ELSE ''
END +
CASE [100K_12_MTH]
  WHEN 'Y' THEN '100K, '
  ELSE ''
END  as [group]
from Members

答案 1 :(得分:0)

试试这个

SELECT
MEMBER_ID,
(CASE [PROC]  WHEN 'Y'
THEN 'Proc' ELSE ''
END +
CASE [50K_12_MTHS] WHEN 'Y'
THEN ', 50K' ELSE '' END   
+ CASE [100K_12_MTHS] WHEN 'Y'
THEN ', 100K' ELSE ''
END) as [GROUP]
from Members