2009-11-16 4 views
3

관련된 열 옆에 표시 할 열 목록을 가져 오기 :나는 테이블 설정과 같이있어 그들이

[ReferredID], [Name] 

1, Irwin 

2, Marc 

1, Johnny 

5, Jackie 

2, Perry 

1, Reuben 

나는이 생산하는 쿼리 얻으려고 :

[ReferredID], [List] 

[1], [Irwin, Johnny, Reuben] 

[2], [Marc, Perry] 

[5], [Jackie] 

이러한 결과를 얻으려면 가까운 쿼리를 찾을 수 있습니까?

+0

???? –

+0

오! Sql Server 2005 – Irwin

답변

3
WITH mytable (ReferredID, Name) AS 
     (
     SELECT 1, 'Irwin' 
     UNION ALL 
     SELECT 2, 'Marc' 
     UNION ALL 
     SELECT 1, 'Johnny' 
     UNION ALL 
     SELECT 5, 'Jackie' 
     UNION ALL 
     SELECT 2, 'Perry' 
     UNION ALL 
     SELECT 1, 'Reuben' 
     ) 
SELECT ReferredID, 
     (
     SELECT CASE ROW_NUMBER() OVER (ORDER BY Name) WHEN 1 THEN '' ELSE ', ' END + Name AS [text()] 
     FROM mytable mi 
     WHERE mi.ReferredID = mo.ReferredID 
     FOR XML PATH('') 
     ) List 
FROM (
     SELECT DISTINCT ReferredID 
     FROM mytable 
     ) mo 
+0

붐! 고마워. – Irwin

1

특정 취향의 SQL을 사용하여이를 수행 할 수는 있지만 모든 SQL 표준에서 지원되는 것으로는 생각하지 않습니다.

일부 프로그램에서 SQL 쿼리를 작성하는 경우 간단한 순서 만 수행 한 다음 코드에서 레코드를 그룹화하는 것이 좋습니다. 파이썬에서

, 같은 : DBMS 무엇에

results = dict() 
for r in rs: 
    if r.ReferrerId not in results: 
     results[r.ReferredId] = list() 
    results[r.ReferredId].append(r.Name) 
관련 문제