Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Nemoxur Member Откуда: Сообщений: 179 |
Добрый день, коллеги. Помогите, пожалуйста, составить запрос SET LANGUAGE 'Russian'; DECLARE @xml XML = ' <Файл> <Документ ДатаДок="25.02.2016" ОтчетГод="2015"> <СведДох Ставка="13"> <ДохВыч> <СвСумДох Месяц="01" КодДоход="2000" СумДоход="345.63" /> <СвСумДох Месяц="01" КодДоход="4800" СумДоход="371.00" /> <СвСумДох Месяц="02" КодДоход="2000" СумДоход="237.78" /> <СвСумДох Месяц="02" КодДоход="2012" СумДоход="172.72" /> </ДохВыч> </СведДох> <СведДох Ставка="35"> <ДохВыч> <СвСумДох Месяц="01" КодДоход="2610" СумДоход="116.77" /> <СвСумДох Месяц="02" КодДоход="2610" СумДоход="87.89" /> <СвСумДох Месяц="03" КодДоход="2610" СумДоход="77.84" /> </ДохВыч> </СведДох> </Документ> </Файл> ' SELECT [color=red][/color] [ДатаДок] = doc.col.value('@ДатаДок', 'date') , [ОтчетГод] = doc.col.value('@ОтчетГод', 'int') , [Ставка] = doc.col.value('СведДох[1]/@Ставка','int') , [Месяц] = x.col.value('@Месяц', 'varchar(2)') , [КодДоход] = x.col.value('@КодДоход', 'int') , [СумДоход] = x.col.value('@СумДоход', 'decimal(19,2)') FROM @xml.nodes('/Файл/Документ') AS doc(col) CROSS APPLY doc.col.nodes( 'СведДох/ДохВыч/СвСумДох' ) AS x (col) что бы получилась ставка 35, а не 13 как в запросе.
|
|||||||||||||||||||||||||||||||||||||||||||||||||
28 фев 19, 10:14 [21821428] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9646 |
[Ставка] = x.col.value('(../..)[1]/@Ставка','int') |
28 фев 19, 10:23 [21821438] Ответить | Цитировать Сообщить модератору |
Nemoxur Member Откуда: Сообщений: 179 |
invm, Спасибо большое! |
28 фев 19, 10:34 [21821449] Ответить | Цитировать Сообщить модератору |
Nemoxur Member Откуда: Сообщений: 179 |
Сообщение было отредактировано: 22 июл 19, 13:16 |
||
22 июл 19, 13:10 [21931680] Ответить | Цитировать Сообщить модератору |
Nemoxur Member Откуда: Сообщений: 179 |
Извините за простыню, не нашёл как сделать. Проблема решилась, может кому пригодится. SELECT col.[СведДох].value('ПолучДох[1]/ФИО[1]/@Фамилия', 'varchar(100)') ,col.[СведДох].value('ПолучДох[1]/ФИО[1]/@Имя', 'varchar(100)') ,col.[СведДох].value('ПолучДох[1]/ФИО[1]/@Отчество', 'varchar(100)') ,col2.[СведДох].value('@Ставка', 'varchar(100)') FROM @xml.nodes('.') AS doc(col) CROSS APPLY doc.[col].nodes('Файл/Документ') col(СведДох) CROSS APPLY col.[СведДох].nodes('СведДох') col2(СведДох) |
22 июл 19, 15:53 [21931826] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |