2014-12-10 4 views
0

다음과 같은 쿼리를 사용하면 M_Item 필드에 DISTINCT 결과 만 표시하는 방법을 알면 쿼리가 이러한 결과를 정렬해도 좋을 것입니다. 나는 그들과 같이 표시 할명령으로 구분 된 문자열 집계에 대한 별개의 결과가 필요합니다.

Customer M_ITEM 
JON   CP024, CP025, CP027, CP028, CP029 
MIKE  CP905, CP906, CP028, CP029, CP027 
JULIE  CP024, CP025, CP027, CP028, CP029 
SAM   CP114, CP024, CP025, CP027, CP028, CP029 
SEAN  CP024, CP025, CP027, CP028, CP029, CP024, CP025, CP027, CP028, CP029 

:

SELECT 
    CUSTOMER AS TN, 
    substr 
    (
     xmlserialize(xmlagg(xmltext(concat(', ', ITEM))) as varchar(1024)), 3 
    ) as M_Item 
FROM ORDERS 
WHERE ITEM LIKE 'CP%' 
GROUP BY CUSTOMERS; 

현재 쇼 결과

Customer M_ITEM 
JON   CP024, CP025, CP027, CP028, CP029 
MIKE  CP027, CP028, CP029, CP905, CP906 
JULIE  CP024, CP025, CP027, CP028, CP029 
SAM   CP024, CP025, CP027, CP028, CP029, CP114 
SEAN  CP024, CP025, CP027, CP028, CP029 

답변

1

당신은 xmlserialize 기능을 사용하기 전에 테이블에서 별개의 항목을 얻어야한다 :

SELECT 
    CUSTOMER AS TN, 
    substr 
    (
     xmlserialize(xmlagg(xmltext(concat(', ', ITEM))) as varchar(1024)), 3 
    ) as M_Item 
FROM 
    (
     select distinct customer, item 
      from ORDERS 
     WHERE ITEM LIKE 'CP%' 
    ) as x;