2016-07-13 3 views
0

저는 DB2 for z/OS V10을 사용하고 있습니다.테이블에서 하나 이상의 레벨로 그룹화 된 XML로 선택하십시오.

나는 다음의 예처럼 더 후 1 개 수준에 위에 언급 된 같은 관계형 테이블의 모든 부분

<actionCodeGrp> 
    <actionCode>A</actionCode> 
    <ISINGrp> 
     <ISIN>DE0000000001</ISIN> 
     <NAME>ISIN-DE-1</NAME> 
     <ISSUER>AAA</ISSUER> 
    </ISINGrp> 
    <ISINGrp> 
     <ISIN>DE0000000002</ISIN> 
     <NAME>ISIN-DE-2</NAME> 
     <ISSUER>BBB</ISSUER> 
    </ISINGrp> 
</actionCodeGrp> 
<actionCodeGrp> 
    <actionCode>B</actionCode> 
    <ISINGrp> 
     <ISIN>DE0000000003</ISIN> 
     <NAME>ISIN-DE-3</NAME> 
     <ISSUER>CCC</ISSUER> 
    </ISINGrp> 
    <ISINGrp> 
     <ISIN>DE0000000004</ISIN> 
     <NAME>ISIN-DE-4</NAME> 
     <ISSUER>DDD</ISSUER> 
    </ISINGrp> 
</actionCodeGrp> 

열을 데이터를 그룹화와 direcly XML로 DB2 테이블에서 일부 데이터를 선택해야합니다. 발견 된 모든 예제는 max. 하나의 group by 절을 사용하면 더 복잡한 쿼리를 작성하는 방법을 알지 못합니다. 누군가 도울 수 있습니까? 하는 XML 문서에 여러 수준 이상

그룹으로
+0

일부 샘플 데이터로 테이블 구조를 게시하는 것이 도움이 될 것이라고 생각하십니까? – mustaccio

+0

우리는 예제 테이블과 시도한 것과 예상했던 결과와 어떻게 일치하지 않는지를 보여줍니다. 이 질문에서 원하는 것을 말할 방법이 없습니다. – Hogan

답변

0

데이터가 너무 잘 지원하지 않는 것,하지만 난 그게 중첩 된 부속 선택하여 작업을했다 : 내부 SELECT이 목록을 생성합니다 그래서 기본적으로

SELECT XMLSERIALIZE(CONTENT         
     XMLELEMENT(NAME "FIELD1",        
        XMLATTRIBUTES(F1),      
        XMLAGG(SUBELEMENT))       
     AS CLOB)            
FROM(              
SELECT F1,             
     XMLELEMENT(NAME "FIELD2",        
        XMLATTRIBUTES(F2),    
        XMLAGG(XMLELEMENT(NAME "FIELD3",   
         XMLATTRIBUTES(F3))))  
     AS SUBELEMENT           
FROM DBTM42VW.KFZT525           
WHERE F1 IN ('VAL1','VAL2')         
    AND F3 IN('SEF','AUS')       
    GROUP BY F1, F2) MYSUBQUERY      
GROUP BY F1            
;                

을 내부 요소와 주변 요소에 사용될 열을 포함하는 원시 XML 요소. 그런 다음 외부 SELECT이이 데이터를 사용하여이 그룹의 그룹을 만듭니다. 결과는 다음과 같습니다.

<FIELD1 F1="VAL1"> 
    <FIELD2 F2="FM124"> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="AUS"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="AUS"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="SEF"/> 
    </FIELD2> 
    <FIELD2 F2="FM132"> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="AUS"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="AUS"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="SEF"/> 
    </FIELD2> 
</FIELD1> 
<FIELD1 F1="VAL2"> 
    <FIELD2 F2="FM124"> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="AUS"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="SEF"/> 
    </FIELD2> 
    <FIELD2 F2="FM132"> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="AUS"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="SEF"/> 
     <FIELD3 F3="AUS"/> 
     <FIELD3 F3="SEF"/> 
    </FIELD2> 
</FIELD1>    
+0

거의 그게 내가 무엇을 찾고 있는지 - thx –

관련 문제