2016-09-21 3 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

이 게시물을 'Resolved'또는 'Closed'로 표시하거나 해당 줄에 표시하려면 어떻게합니까? – SeyedG

관련 문제