2017-09-14 7 views
0

値をカンマでマージする方法が非常にたくさんあります。 idsをコンマでマージするという面倒な要件があります。私は約10列のテーブルを持っています。たとえば。同じ値を持つカンマ区切りID列

 declare @t1 TABLE (id INT, NAME VARCHAR(MAX), address1 varchar(max), mobileno varchar(max)); 
    INSERT @t1 values (1,'100',null,'1111111111'); 
    INSERT @t1 values (2,'100','pune','1111111111'); 
    INSERT @t1 values (3,'200',null,null); 
    INSERT @t1 values (4,'300','pune',null); 
    INSERT @t1 values (5,'200',null,'1111111111'); 

    SELECT 
    STUFF((
    SELECT ','+CAST(ID AS VARCHAR(10)) [text()] 
    FROM @t1 as B 
    WHERE B.NAME = A.NAME 
    FOR XML PATH('')),1,1,'') as ID, NAME, address1, mobileno 
    FROM @t1 as A 
    GROUP BY NAME, address1, mobileno 

たとえば、

ID | Value 
---+------- 
1 | 100 
2 | 100 
3 | 200 
4 | 200 
5 | 300 

私はご注意

ID | Value 
---|------ 
1,2| 100 
3,4| 200 
    5| 300 
+0

これは珍しいことではありません。 Google:SQL Serverの文字列集約。 –

答えて

0
--sample table: 
WITH ABC 
AS 
(
SELECT '1' as ID, '100' as value 

UNION 

SELECT '2' as ID, '100' as value 

UNION 

SELECT '3' as ID, '200' as value 

UNION 

SELECT '4' as ID, '200' as value 

UNION 

SELECT '5' as ID, '300' as value 


) 
--Expected query: 
SELECT 
STUFF((
SELECT ','+ID 
FROM ABC as B 
WHERE B.Value = A.Value 
FOR XML PATH('')),1,1,'') as ID, Value 
FROM ABC as A 
GROUP BY Value 

--Desired output: 
    ID Value 
    1,2 100 
    3,4 200 
    5 300 

のような出力を必要とする:','+ IDが、それ以外の場合は正しく動作する前に変換する必要があり、IDはVARCHARまたは類似の文字列型であることを確認しなければなりません。

関連する問題