powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / xmlAGG
6 сообщений из 6, страница 1 из 1
xmlAGG
    #34087192
risfek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Есть табличка
Код: plaintext
1.
WITH t (x1,x2,x3) AS (VALUES ( 1 , 1 , 1 ),( 1 , 2 , 2 ),( 1 , 3 , 3 ))

для представления ее в xml 2х уровней можно попользоватся xmlAGG
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    WITH t (x1,x2,x3) AS (VALUES ( 1 , 1 , 1 ),( 1 , 2 , 2 ),( 1 , 3 , 3 ))
SELECT x1
,xml2clob(
XMLELEMENT(NAME "L1",
                XMLELEMENT(NAME "X1", x1)
                ,xmlAGG(
                        XMLELEMENT(NAME "L2"
                                , XMLELEMENT(NAME "X2", x2)
                                )
                        )
                )
) AS outdata
FROM t
group by x1
получится так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  <L1>
      <X1> 1 </X1>
      <L2>
          <X2> 1 </X2>
      </L2>
      <L2>
          <X2> 2 </X2>
       </L2>
      <L2>
          <X2> 3 </X2>
       </L2>
   </L1>
а как можно сделать больше уровней?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
      <L1>
      <X1> 1 </X1>
      <L2>
          <X2> 1 </X2>
          <L3>
              <X3> 1 </X3>
          </L3>
      </L2>
      <L2>
          <X2> 2 </X2>
          <L3>
              <X3> 1 </X3>
          </L3>
       </L2>
      <L2>
          <X2> 3 </X2>
          <L3>
              <X3> 1 </X3>
          </L3>
       </L2>
   </L1>
...
Рейтинг: 0 / 0
xmlAGG
    #34091346
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сформулируй более конкретно.
...
Рейтинг: 0 / 0
xmlAGG
    #34097046
risfek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробую.
есть табличка
автомобиль, неисправность, способ устранения
нужно представить этоу таблицу в xml виде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<автомобиль>
	<неисправность>
		<способ/>
		<способ/>
	</неисправность>
	<неисправность>
		<способ/>
		<способ/>
	</неисправность>
</автомобиль>
<автомобиль>
	<неисправность>
		<способ/>
		<способ/>
	</неисправность>
	<неисправность>
		<способ/>
		<способ/>
	</неисправность>
</автомобиль>
для случая
Код: plaintext
1.
2.
3.
4.
<автомобиль>
	<неисправность/>
	<неисправность/>
</автомобиль>
можно попользовать xmlAGG, а вот как 3 уровня
...
Рейтинг: 0 / 0
xmlAGG
    #34097192
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может, так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
WITH t (x1,x2,x3) AS (VALUES ( 1 , 1 , 1 ),( 1 , 2 , 2 ),( 1 , 3 , 3 ))
, a as
(
SELECT x1, x2
, XMLELEMENT
 (
     NAME "L2"
   , XMLELEMENT(NAME "X2", x2)
   , XMLAGG
   (
    XMLELEMENT 
    (
      NAME "L3"
    , XMLELEMENT(NAME "X3", x3)
    )
   )
 ) x3
FROM t  
GROUP BY x1, x2
)
, b as
(
SELECT x1
, XMLELEMENT
 (
     NAME "L1"
   , XMLELEMENT(NAME "X1", x1)
   , XMLAGG(x3)
 ) x2
FROM a  
GROUP BY x1
)
SELECT
XMLSERIALIZE
(
 CONTENT 
 (
   XMLAGG(x2)
 ) as clob( 512 )
) x2
FROM b;
?
...
Рейтинг: 0 / 0
xmlAGG
    #34099374
risfek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinstein? спасибо! так и нужно.
можно уточнить?
XMLELEMENT
возвращаемый в "b" как x3
при длинных строках корректно отработает?

т.е. это ELEMENT а не строка.
...
Рейтинг: 0 / 0
xmlAGG
    #34099897
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поищите в здесь по подстроке xml-function
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / xmlAGG
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]