2014-02-27 83 views
2

表有4列a,b,c,d其中a有一組記錄,每組有記錄,每組b有c和d值。 如何使用Oracle xml sql生成以下結果?所有示例都涉及到emp表,只有1個「員工」分組。如果還有一個分組需要例如「城市」會怎麼樣? 謝謝。Oracle xml sql在2組的情況下

<GROUP_A> 
    <a val="1"> 
     <Group_B> 
     <b val="1"> 
      <Group_C> 
       <C> 
        <c>1</c> 
        <d>1</d> 
       </C> 
       <C> 
        <c>2</c> 
        <d>2</d> 
       </C> 
      </Group_C> 
     </b> 
     <b val="2"> 
      <Group_C> 
       <C> 
        <c>1</c> 
        <d>1</d> 
       </C> 
       <C> 
        <c>2</c> 
        <d>2</d> 
       </C> 
      </Group_C> 
     </b> 
     </Group_B> 
    </a> 
    <a val="2"> 
     <Group_B> 
     <b val="1"> 
      <Group_C> 
       <C> 
        <c>1</c> 
        <d>1</d> 
       </C> 
       <C> 
        <c>2</c> 
        <d>2</d> 
       </C> 
      </Group_C> 
     </b> 
     <b val="2"> 
      <Group_C> 
       <C> 
        <c>1</c> 
        <d>1</d> 
       </C> 
       <C> 
        <c>2</c> 
        <d>2</d> 
       </C> 
      </Group_C> 
     </b> 
     </Group_B> 
    </a> 
</GROUP_A> 

OP試過這種

SELECT XMLElement("Group_A", XMLAttributes(a AS "a"), 
     Xmlagg(XMLELEMENT ("Group_b", XMLAttributes(b AS "b"), 
     XMLELEMENT ("c",c), XMLELEMENT ("d",c)))) 
FROM table 
GROUP BY a 
+0

嘛,你嘗試過什麼? – OldProgrammer

+0

我嘗試這樣做:SELECT的XMLElement( 「Group_A」, XMLATTRIBUTES(一個爲 「A」), XMLAGG(XMLELEMENT( 「Group_b」, XMLATTRIBUTES(B爲 「B」), XMLELEMENT( 「C」,C) , XMLELEMENT( 「d」,C) ) ) ) FROM表 GROUP BY一個 – user3358291

回答

0

這裏有一個查詢,將返回你想要什麼:

SELECT 
XMLELEMENT(
     "Group_A", 
     XMLAGG(
      XMLELEMENT(
      "a", 
      XMLATTRIBUTES(A AS "val"), 
      (SELECT 
       XMLELEMENT (
       "Group_b", 
       XMLAGG( 
        XMLELEMENT(
        "b", 
        XMLATTRIBUTES(t1.B AS "val"), 
        XMLELEMENT (
         "Group_C", 
         XMLAGG(
         XMLELEMENT (
          "C", 
          XMLELEMENT ("c",T1.C), 
          XMLELEMENT ("d",t1.D) 
         ) 
         ) 
        ) 
        ) 
       ) 
       ) 
      FROM TEST T1 
      WHERE T1.A = T2.A 
      GROUP BY t1.A, t1.B) 
      ) 
     ) 
     ) 

FROM (SELECT distinct t3.a FROM TEST t3) T2; 
+0

它的工作原理!!!!感謝Rida的!!!!!!!!!!!!! – user3358291

+0

@ user3358291太棒了,我在測試之前發佈了它)所以請考慮接受答案:) –

+0

當然,我該怎麼做呢?這是我第一次使用這個系統。 – user3358291