2013-10-16 6 views
0

J'essaie de combiner plusieurs colonnes (varchar, mais utilisé pour stocker booléen 'Y' ou '') dans une seule colonne (liste) avec du texte lisible par l'homme.MS sql combiner des colonnes dans select

La disposition de table est comme ceci:

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

Pour la sortie de l'échantillon en mesure, je suis en train de faire:

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

Je pense que la façon de le faire est avec un cas (voir ci-dessous) mais ne peut pas le faire fonctionner.

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 

Répondre

0

Presque ...!

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 
+0

cela va générer des virgules indésirables à la fin de la .. –

+0

@Rahul resultset vôtre sera les générer au début. De toute façon, les supprimer est trivial. – podiluska

+0

@ podiluska..Mais l'exigence est comme ça..les virgules dans le début..vous pouvez le voir ci-dessus –

0

Essayez cette

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 
+0

@ user1951570..avez-vous obtenu votre résultat attendu de la réponse marquée comme correcte ... ??? –

+0

la première bonne réponse a fonctionné. Je n'ai pas remarqué le supplément ',' – NJinPHX

+0

@ NJinPHX..est cette virgule supplémentaire nécessaire dans votre jeu de résultats ..? Si non, essayez mon code ... –

Questions connexes