Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите разобраться с openxml  [new]
Vinil
Member

Откуда:
Сообщений: 28
Помогите вытащить значение col, значение просто дублируется, для разных значений code

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
12 фев 18, 11:40    [21184855]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с openxml  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Vinil,

	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
12 фев 18, 12:00    [21184905]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с openxml  [new]
Vinil
Member

Откуда:
Сообщений: 28
Minamoto,

Огромное спасибо за помощь!
12 фев 18, 12:02    [21184917]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить