2013-02-15 85 views
-1

我需要寫一個查詢的幫助,其中查詢輸出顯示一列包含以逗號分隔的數據的列。在一列中用逗號分隔輸出的子查詢

我有兩個表有一對多的關係。我想編寫一個查詢,它將輸出表中的所有記錄與一條記錄一起輸出,但在具有多條記錄的表中的一列中顯示逗號分隔的數據。

表1

Col1 Col2 Col3 
a1  1 4 
a2  2 5 
a3  3 6 
a4  7 8 

表2

Col1 Col4 
a1  10 
a1  11 
a1  22 
a2  10 
a2  11 
a3  19 
a3  22 
a3  23 
a4  15 

查詢輸出:

Col1 Col2 Col3 Col4 
a1  1 4 10,11,22 
a2  2 5 10,11 
a3  3 6 19,22,23 
a4  7 8 15 

在此先感謝

回答

2

您可以使用以下方法:

select t1.col1, 
    t1.col2, 
    t1.col3, 
    left(t2.col4, len(t2.col4)-1) col4 
from table1 t1 
cross apply 
(
    select cast(t2.Col4 as varchar(10)) + ', ' 
    from Table2 t2 
    where t1.col1 = t2.col1 
    FOR XML PATH('') 
) t2 (col4) 

請參閱SQL Fiddle with Demo

或者你可以使用:

select t1.col1, 
    t1.col2, 
    t1.col3, 
    STUFF(
     (SELECT ', ' + cast(t2.Col4 as varchar(10)) 
      FROM Table2 t2 
      where t1.col1 = t2.col1 
      FOR XML PATH ('')) 
      , 1, 1, '') AS col4 
from table1 t1 

SQL Fiddle with Demo

1
SELECT Col1, 
     Col2, 
     Col3, 
     Col4 = SUBSTRING((
          SELECT ',' + af.awardFocusName 
           FROM Table2 t2  
          WHERE t2.Col1 = t1.Col1 
          FOR XML PATH('') 
         ), 2, 1000000) 
    FROM Table1 t1