Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться с openxml / 3 сообщений из 3, страница 1 из 1
12.02.2018, 11:40
    #39600489
Vinil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с openxml
Помогите вытащить значение 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
12.02.2018, 12:00
    #39600500
Minamoto
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с openxml
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
12.02.2018, 12:02
    #39600503
Vinil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с openxml
Minamoto,

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


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