2016-09-21 155 views
0

我們正在運行SQL Server 2005.我在滾動列時遇到問題。如何彙總列

create table group_roll 
(
    id_name int, 
    full_name varchar(50), 
    qty int 
) 
go 

insert into group_roll (id_name, full_name, qty) 
values (1, 'john smith', 10) 

insert into group_roll (id_name, full_name, qty) 
values (1, 'john smith', 40) 

insert into group_roll (id_name, full_name, qty) 
values (1, 'jane smith', 50) 

insert into group_roll (id_name, full_name, qty) 
values (1, 'dean smith', 10) 

insert into group_roll (id_name, full_name, qty) 
values (2, 'frank white', 5) 

insert into group_roll (id_name, full_name, qty) 
values (2, 'Ann white', 12) 

insert into group_roll (id_name, full_name, qty) 
values (1, 'john smith', 8) 

insert into group_roll (id_name, full_name, qty) 
values (2, 'frank white', 10) 

insert into group_roll (id_name, full_name, qty) 
values (3, 'perry mason', 10) 
go 

select * 
from group_roll 
order by id_name 

輸出:

id_name  full_name   qty 
    -------------------------------------- 
    1   john smith   10 
    1   john smith   40 
    1   jane smith   50 
    1   dean smith   10 
    1   john smith   8 
    2   frank white   10 
    2   frank white   5 
    2   Ann white   12 
    3   perry mason   10 

我想被軋結果成這樣的

id_name name         qty 
    ---------------------------------------------------- 
    1  john smith, jane smith, dean smith  118 
    2  frank white, ann white     27 
    3  perry mason        10 

你如何代碼彙總名稱和數量,如圖?

謝謝

賽義德

回答

1

試試這個:它會給你你所期望的,但輸出你提供了,如果我沒看錯的第三列保持錯誤值:

SELECT id_name, 
STUFF((SELECT DISTINCT ', ' + full_name FROM group_roll A 
    WHERE A.id_name=b.id_name FOR XML PATH('')),1,1,'') As name, 
SUM(qty) qty    
FROM group_roll b 
GROUP BY id_name 
+0

這工作。非常感謝你。你對第三行是正確的,這是錯誤複製和粘貼的結果。它應該顯示'佩裏梅森'。 – SeyedG

+0

如何將此帖標記爲「已解決」或「已關閉」或其他內容? – SeyedG