2014-11-24 90 views
3

創建CSV字符串我有一個具有以下值的表:在TSQL

NAME  Value1  Value2 
-------------------------------- 
N1   1   10 
N1   2   11 
N2   3   12 
N2   4   13 
N2   5   14 

,我想創建以下結果:

NAME  Value1  Value2_CSV 
----------------------------------- 
N1   1   10,11 
N1   2   10,11 
N2   3   12,13,14 
N2   4   12,13,14 
N2   5   12,13,14 

任何人都可以幫助嗎? 在此先感謝

回答

3

這是聚合字符串連接的變體 - 但沒有聚合。

我會寫爲:

select t.name, t.value1, 
     stuff((select ',' + cast(t2.value2 as varchar(8000)) 
       from table t2 
       where t2.name = t.name 
       order by t2.value1 
       for xml path ('') 
      ), 1, 1, '') as value2_csv 
from table t; 
0

這個查詢會有所幫助。

DECLARE @Table AS TABLE 
(
    NAME VARCHAR(100), 
    Value1 Int, 
    Value2 Int 
) 

INSERT INTO @Table 
SELECT 'N1', 1 , 10 UNION 
SELECT 'N1', 2 , 11 UNION 
SELECT 'N2', 3 , 12 UNION 
SELECT 'N2', 4 , 13 UNION 
SELECT 'N2', 5 , 14 


SELECT NAME, Value1, Value2_CSV = 
    STUFF((SELECT ',' + CAST(B.Value2 as VARCHAR(MAX)) 
      FROM @Table AS B WHERE B.NAME = A.NAME 
      GROUP BY B.Value2 for XML PATH (''), TYPE) 
      .value('.', 'varchar(max)') ,1,1,'') 
FROm @Table AS A