powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / FOR XML EXPLICIT
3 сообщений из 3, страница 1 из 1
FOR XML EXPLICIT
    #34010257
NNika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть sql-запрос, представляющий данные в формате XML:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
select  
        1  as Tag,
       NULL   as Parent,
       isnull(cast([[Отправитель]].[Отправитель]].[MEMBER_CAPTION]]] as varchar), 'ВСЕГО') as  [station! 1 !station], 
       Cast([[Груз]].[Груз1]].[MEMBER_CAPTION]]] as varchar) as [station! 1 !gruz!element], 
       isnull( [[Measures]].[Вагоны]]], 0 ) as [station! 1 !vagon!element], 
     [[Measures]].[Вагоны нрст]]] as [station! 1 !vagm], 
       Round (cast ([[Measures]].[Вес_т]]] as varchar), 0 ) as   [station! 1 !ves] , 
       Round (cast ([[Measures]].[Вес нрст]]] as varchar), 0 ) as [station! 1 !vesm], 
       IsNull(cast ([[Measures]].[План ваг]]] as varchar), 0 ) as [station! 1 !plan_v],
       IsNull(cast ([[Measures]].[План тонн]]] as varchar), 0 ) as [station! 1 !plan_t] 
from openrowset('MSOLAP.2','Provider=MSOLAP.2;Persist Security     Info=True;User ID=sa;Data Source=http://10.80.50.17; Initial Catalog=KSARM;Client Cache Size=25;Auto Synch Period=10000' ,  
       'select {[Measures].[Вагоны], [Measures].[Вагоны нрст], [Measures].[Вес_т], [Measures].[Вес нрст], [Measures].[План тонн],[Measures].[План ваг]} on columns, 
                 non empty (Filter([Отправитель].Members, ([Measures].[Вагоны нрст])>0) * Filter([Груз].[Груз1].Members, [Measures].[Вагоны нрст]>0))on rows  
                 from [Погрузка] 
                where ([Дата].[Все Даты].[2006].[September].[21],[Станция погр].[Все станции].[ЧЕЛЯБ].[ЧЕЛЯБИНСКИЙ].[МЕТАЛЛУРГИЧЕСКАЯ])') 
 
FOR XML EXPLICIT

В результате выполнения этого запроса, получается следующий XML-документ:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<?xml version="1.0" encoding="utf-8" ?> 
- <root>
- <station station="ВСЕГО" vagm="5" vesm="67" plan_v="0" plan_t="0">
  <gruz>Автомобили</gruz> 
  <vagon> 0 </vagon> 
  </station>
- <station station="ВСЕГО" vagm="317" ves="787" vesm="15448" plan_v="0" plan_t="0">
  <gruz>Кокс</gruz> 
  <vagon> 17 </vagon> 
  </station>
- <station station="ВСЕГО" vagm="98" ves="71" vesm="4842" plan_v="0" plan_t="0">
  <gruz>Лом черных металлов</gruz> 
  <vagon> 1 </vagon> 
  </station>
- <station station="ВСЕГО" vagm="7" vesm="99" plan_v="0" plan_t="0">
  <gruz>Машины и оборудование</gruz> 
  <vagon> 0 </vagon> 
  </station>
- <station station="ВСЕГО" vagm="18" vesm="351" plan_v="0" plan_t="0">
  <gruz>Металлоконструкции</gruz> 
  <vagon> 0 </vagon> 
  </station>

Мне нужно получить XML-файл в таком виде:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<?xml version="1.0" encoding="utf-8" ?> 
- <root>
- <station  station="ВСЕГО" > 
     <attr vagm="5" vesm="67" plan_v="0" plan_t="0"> 
           <gruz>Автомобили</gruz> 
           <vagon> 0 </vagon> </attr>
     <attr vagm="317" ves="787" vesm="15448" plan_v="0" plan_t="0">
          <gruz>Кокс</gruz> 
         <vagon> 17 </vagon> </attr>
     <attr vagm="98" ves="71" vesm="4842" plan_v="0" >
          <gruz>Лом черных металлов</gruz> 
          <vagon> 1 </vagon> </attr>
      <attr vagm="7" vesm="99" plan_v="0" plan_t="0">
          <gruz>Машины и оборудование</gruz> 
          <vagon> 0 </vagon> </attr>
...................... и т.д. ..............
  </station>


Как это сделать средствами sql?
...
Рейтинг: 0 / 0
FOR XML EXPLICIT
    #34014966
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
-- <station>
select
        1  as Tag,
       NULL   as Parent,
... as [station! 1 !station]
...
from ...
-- <attr>
union all select
        2  as Tag,
        1  as Parent,
... as [attr! 2 !...]
... as [attr! 2 !gruz!element]
... as [attr! 2 !vagon!element]
from ...
...
Рейтинг: 0 / 0
FOR XML EXPLICIT
    #34020261
NNika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, всё получилось
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / FOR XML EXPLICIT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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