2016-07-13 19 views
0

私はDB2 for z/OS V10を使用しています。複数のレベルでグループ化されたxmlとしてテーブルから選択

Iは、次の例のように複数次いで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> 

列のデータをグループ化して直接使うXMLにDB2テーブルからいくつかのデータを選択する必要があります。 私が見つけたすべての例は最大でしかありませんでした。 1つのgroup by節で、より複雑なクエリを書く方法がわかりません。助けてもらえますか? XMLドキュメントにグループ化

+0

いくつかのサンプルデータを使用してテーブル構造を投稿すると役立つでしょうか? – mustaccio

+0

サンプルテーブルと試したもの、そしてそれが期待した結果とどのように一致しなかったかを示します。この質問からあなたが望むものを言う方法はありません。 – Hogan

答えて

0

複数のレベルの上にデータがあまりにもサポートされていないようだが、私はそれがネストされた副問い合わせを使用して働かせた:

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            
;                

だから、基本的には、内側SELECTはのリストを生成します内側のグループとその周囲の要素で使用される列を含む生の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 –

関連する問題