powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться с openxml
3 сообщений из 3, страница 1 из 1
Помогите разобраться с openxml
    #39600489
Vinil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите вытащить значение col, значение просто дублируется, для разных значений code

Код: sql
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.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
IF OBJECT_ID ('tempdb..#T') is not NULL DROP TABLE #T

create table #T (XmlCol xml)
insert into #T (XmlCol) 
values (
'<report code="610013001012" form="1" shifr="stk_un_p1" year="2017" period="1201" version="05-02-2017">
 <title>
  <item name="okpo" value="123456789" /> 
  <item name="name" value="ООО Вася Пупкин" /> 
  <item name="leader_fio" value="Вася" /> 
  <item name="responsible_post" value="статист-аналитик" /> 
  <item name="responsible_fio" value="П" /> 
  <item name="phone" value="123456" /> 
  <item name="email" value="ru@ru.ru" /> 
  </title>
 <sections>
 <section code="1">
 <row code="1">
  <col code="1">655</col> 
  <col code="2">0</col> 
  <col code="3">0</col> 
  </row>
 <row code="2">
  <col code="1">7554</col> 
  <col code="2">0</col> 
  <col code="3">0</col> 
  </row>
  <row code="15">
  <col code="1">16</col> 
  </row>
  <row code="17">
  <col code="1">18</col> 
  </row>
  <row code="19">
  <col code="1">20</col> 
  </row>
  </section>
  <section code="2">
  <row code="21" s1="10.71.2">
  <col code="1">12</col> 
  <col code="2">0</col> 
  <col code="3">0</col> 
  </row>
  </section>
  <section code="4" /> 
  <section code="5">
  <row code="50" s1="10.71.12" s2="168">
  <col code="1">0.2</col> 
  <col code="2">0</col> 
  <col code="3">0</col> 
  <col code="4">0.2</col> 
  <col code="5">0.2</col> 
  <col code="6">12</col> 
  </row>
  <row code="50" s1="10.71.11" s2="168">
  <col code="1">0.4</col> 
  <col code="2">0</col> 
  <col code="3">0</col> 
  <col code="4">0.4</col> 
  <col code="5">0.4</col> 
  <col code="6">55</col> 
  </row>
  </section>
  </sections>
  </report>
  ')


	DECLARE @idoc INT
	DECLARE @xml xml

	SET @xml = (select XmlCol from #T)

	EXEC sp_xml_preparedocument @idoc OUTPUT ,@xml 

	select * FROM openxml(@idoc,'/report/title/item',1)

	with (
			 
		 [Name]	varchar(200)		 '@name'
		 ,[NameValue]	varchar(200) '@value'
	)

	select *
	FROM openxml(@idoc,'/report/sections/section/row/col',1)
	with (
			 
			  [ReportCode]	varchar(200)		'../../../../@code'
			 ,[Reportform]	varchar(200)		'../../../../@form'
			 ,[Reportshifr]	varchar(200)		'../../../../@shifr'
			 ,[ReportYear]	varchar(200)		'../../../../@year'
			 ,[Reportperiod]	varchar(200)	'../../../../@period'
			 ,[Reportversion]	varchar(200)	'../../../../@version'

			 
			 ,[SectionCode]	varchar(200)	'../../@code'
			 ,[RowCode]		varchar(200)	'../@code'
			 ,[RowS1]		varchar(200)	'../@s1'
			 ,[RowS2]		varchar(200)	'../@s2'
			 ,[ColCode]		varchar(200)	'@code'
			 ,[ColValue]	varchar(200)	'../col[@code]'

    )
	EXEC sp_xml_removedocument @idoc
...
Рейтинг: 0 / 0
Помогите разобраться с openxml
    #39600500
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vinil,

Код: sql
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.
	DECLARE @idoc INT
	DECLARE @xml xml

	SET @xml = (select XmlCol from #T)

	EXEC sp_xml_preparedocument @idoc OUTPUT ,@xml 

	select * FROM openxml(@idoc,'/report/title/item',1)

	with (
			 
		 [Name]	varchar(200)		 '@name'
		 ,[NameValue]	varchar(200) '@value'
	)

	select *
	FROM openxml(@idoc,'/report/sections/section/row/col',1)
	with (
			 
			  [ReportCode]	varchar(200)		'../../../../@code'
			 ,[Reportform]	varchar(200)		'../../../../@form'
			 ,[Reportshifr]	varchar(200)		'../../../../@shifr'
			 ,[ReportYear]	varchar(200)		'../../../../@year'
			 ,[Reportperiod]	varchar(200)	'../../../../@period'
			 ,[Reportversion]	varchar(200)	'../../../../@version'

			 
			 ,[SectionCode]	varchar(200)	'../../@code'
			 ,[RowCode]		varchar(200)	'../@code'
			 ,[RowS1]		varchar(200)	'../@s1'
			 ,[RowS2]		varchar(200)	'../@s2'
			 ,[ColCode]		varchar(200)	'@code'
			 ,[ColValue]	varchar(200)	'text()'

    )
	EXEC sp_xml_removedocument @idoc
...
Рейтинг: 0 / 0
Помогите разобраться с openxml
    #39600503
Vinil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Minamoto,

Огромное спасибо за помощь!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться с openxml
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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