Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
marvel Member Откуда: Сообщений: 1066 |
вопрос - возможно ли переписать этот код одним запросом без использования курсора?declare @result table(name varchar(100), title varchar(max),cnt int) --таблица с результатом declare @product table(name varchar(100), title varchar(max)) insert into @product(name,title) values('стол','стол обеденный'),('стул','стул кухонный') declare @t table (x xml) insert into @t(x) values('<product name="стол" count="4"/>'),('<product name="стул" count="1"/>') declare @x xml declare cr cursor local static forward_only read_only for select x from @t open cr fetch next from cr into @x while @@fetch_status = 0 begin insert into @result (name,cnt,title) select x.name,x.cnt,p.title from ( select c.value('@name','varchar(100)') name,c.value('@count','int') cnt from @x.nodes('product') as t(c) ) x left join @product p on p.name = x.name fetch next from cr into @x end close cr deallocate cr select * from @result |
18 окт 16, 11:35 [19793782] Ответить | Цитировать Сообщить модератору |
serpentariy Member Откуда: Сообщений: 265 |
select x.name,x.cnt,p.title from ( select c.value('@name','varchar(100)') name,c.value('@count','int') cnt from @t cross apply x.nodes('product') as t(c) ) x left join @product p on p.name = x.name |
18 окт 16, 11:52 [19793877] Ответить | Цитировать Сообщить модератору |
marvel Member Откуда: Сообщений: 1066 |
serpentariy, Спасибо! |
18 окт 16, 11:54 [19793898] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |