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

Откуда: родина Ленина!
Сообщений: 1980
вообще есть таблица(пример)
Id(число) набор параметров(строка)
5 4/5/77/778/88
и так далее
надо сделать чтоб на каждую запись в текущей таблице возвращалось
колво записей равное кол-ву числен если распарсить 2-е поле по "/"
т.е. на выходе
5 4
5 5
5 77
5 778
5 88
и так для каждой записи в первой таблице.
надо просто данные импортировать из разных структур. сделал через курсоры но уж медленно очень. Можно ли без курсора?
declare @Id int
declare @SomeValues nvarchar(500)

declare cur cursor for select [Id],[SomeValues ] From [dbo].[Source]
OPEN cur;
FETCH NEXT FROM cur INTO @Id,@SomeValues 
WHILE @@FETCH_STATUS = 0
BEGIN
	insert into [dbo].[destination] (Id,ValueId) 
	select @Id, CONVERT(int, value) from Settings.ParsingBySeperator(@SomeValues ,'/')  	
FETCH NEXT FROM cur INTO  @Id,@SomeValues 
END
CLOSE cur;
DEALLOCATE cur;

п.с. Settings.ParsingBySeperator возвращает распарсеный массив
5 окт 12, 00:59    [13271053]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с множественым подзапросом  [new]
maxover
Member

Откуда:
Сообщений: 4
handmadeFromRu
Можно ли без курсора?

Конечно же можно!

Для вашего случая подойдет функция CROSS APPLY

Запрос будет выглядеть примерно так:
SELECT S.Id, F.value FROM [dbo].[Source] AS S
CROSS APPLY Settings.ParsingBySeperator(S.SomeValues ,'/') as F
5 окт 12, 02:02    [13271111]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с множественым подзапросом  [new]
handmadeFromRu
Member

Откуда: родина Ленина!
Сообщений: 1980
[quot maxover]
Конечно же можно!
quot]
пасиб
5 окт 12, 07:43    [13271273]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить