2013-08-16 3 views
0

project_id가 일치 할 때 행간에 여러 이름을 하나의 열에 결합하려고합니다. 내가 자기 조인으로 시작했지만, 내가 원하는 방식대로 작동하지 못했고, 훨씬 더 쉽게이 일을 할 수있는 함수 나 cte가 있다는 것이 확실합니다. 방향을 묻습니다. db2로 작업하기.여러 행을 하나로 결합하기

여기는 내가 지금까지 가지고있는 작업이 아니며 -104 오류가 발생합니다.

(

     SELECT 
         DP.D_P_ID, DP.project_name, 
         DU2.NAME_LAST CONCAT ', ' CONCAT DU2.NAME_FIRST AS 
         FROM Fact_table as FAT 
         INNER JOIN D_P DP ON FAT.D_P_ID = DP.D_P_ID 
         INNER JOIN B_U_P BUP on DP.D_P = BUP.D_P_ID 
         INNER JOIN D_U DU2 ON BUP.D_U_ID = DU2.D_U_ID 
         INNER JOIN D_Date DD ON FAT.START_DATE_ID = DD.DATE_KEY 
         INNER JOIN D_A DA ON FAT.D_A_ID = DA.D_A_ID 
         WHERE (( (DD.DATE_VALUE >= '2013-01-01') 
           OR (DD.DATE_VALUE < '2014-01-01') 
           OR (DD.DATE_VALUE <= '2013-01-01'))) 
           AND DA.M_NAME = 'Mandy' 
           AND BUP.USER_FLAG = 'Y' 

         GROUP BY DP.D_P_ID, DP.project_name, DU2.NAME_LAST CONCAT ', ' CONCAT DU2.NAME_FIRST 
         ORDER BY DP.project_name 
      ) PI1  

       join 

         (
           SELECT 
         DP.D_P_ID, DP.project_name, 
         DU2.NAME_LAST CONCAT ', ' CONCAT DU2.NAME_FIRST AS 
         FROM Fact_table as FAT 
         INNER JOIN D_P DP ON FAT.D_P_ID = DP.D_P_ID 
         INNER JOIN B_U_P BUP on DP.D_P = BUP.D_P_ID 
         INNER JOIN D_U DU2 ON BUP.D_U_ID = DU2.D_U_ID 
         INNER JOIN D_Date DD ON FAT.START_DATE_ID = DD.DATE_KEY 
         INNER JOIN D_A DA ON FAT.D_A_ID = DA.D_A_ID 
         WHERE (( (DD.DATE_VALUE >= '2013-01-01') 
           OR (DD.DATE_VALUE < '2014-01-01') 
           OR (DD.DATE_VALUE <= '2013-01-01'))) 
           AND DA.M_NAME = 'Mandy' 
           AND BUP.USER_FLAG = 'Y' 

         GROUP BY DP.D_P_ID, DP.project_name, DU2.NAME_LAST CONCAT ', ' CONCAT DU2.NAME_FIRST 
         ORDER BY DP.project_name 
         ) PI2 on PI1.d_p_id = PI2.d_p_id 

데이터 예 : 사용할 수

select d_p_id, project_name, listagg(admin, ',') 
from (...) 
group by d_p_id, project_name 

listagg() 기능과 같은 외부 사용을 선택 뭔가에 enter image description here

+0

DB2 버전 및 플랫폼은 무엇입니까? – mustaccio

+0

버전 번호가 9070500 인 DbVisualizer를 사용하고 있습니다. – Tone

+0

DBVisualizer는 정보가 저장된 DB2 데이터베이스가 아닌 데이터를 조회하는 데 사용하는 도구입니다. DB2 버전은 실행중인 데이터베이스 서버와 운영 체제는 무엇입니까? 이 정보는 귀하의 환경에 가장 잘 맞는 답을 제공하는 데 도움이 될 수 있습니다. – WarrenT

답변

1

: enter image description here

이것은 내가 필요 결과입니다 DB2 9.7 이상, 그룹 내 연결을 통해 집계 p, 지정된 분리 문자 사용.