2015-06-04 64 views
1

我有這樣一個表,如何做到這一點沒有while循環SQL

A   |  B 
---------------------- 
1   |  10 
1   |  20 
2   |  30 
2   |  40 

我需要的輸出,

A   |   B 
------------------------ 
1   |  10,20 
2   |  30,40 

預先感謝您

+0

GROUP BY,也許是STUFF或GROUP_CONCAT或類似的。列B的哪種數據類型? – jarlh

+0

它的int數據類型 –

回答

3

試試這個。

create table #table2(
    col1 int, 
    col2 varchar(10), 
) 

insert into #table2 
select 1, '10' union all 
select 1, '20' union all 
select 1, '30' union all 
select 2, '40' union all 
select 2, '50' union all 
select 2, '60' 


select 
    col1, 
    col2 = 
     stuff((
      select 
       ', ' + t2.col2 
      from #table2 t2 
      where 
       t2.col1 = t1.col1 
      for xml path(''), type).value('.', 'varchar(max)' 
     ), 1, 2, '') 
from #table2 t1 
GROUP BY t1.col1 
+0

在本例中,您並不需要在內部查詢中使用group。您確實需要 – ughai

+0

@ughai對不起。我的錯誤。沒有看到標籤 –

+0

我不能插入到另一個表,因爲它有太多的行 –