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

Фимилия Количество
Иванов 6
Петров 10


Надо вставить в новую таблицу Иванова 6 раз А Петрова 10 раз

Подскажите пожалуйста
9 окт 14, 13:25    [16681552]     Ответить | Цитировать Сообщить модератору
 Re: insert в цикле  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8815
курсор + While
9 окт 14, 13:31    [16681606]     Ответить | Цитировать Сообщить модератору
 Re: insert в цикле  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Владислав Колосов
курсор + While

вот так сразу человека плохому учите. join каждой строки на таблицу с целыми числами с ограничением количества и все
9 окт 14, 13:33    [16681630]     Ответить | Цитировать Сообщить модератору
 Re: insert в цикле  [new]
шерлок
Guest
Владислав Колосов,
Я не могу понять как сделать WHILE для каждой фамилии

DECLARE @x VARCHAR(255);
DECLARE @Value [int]


DECLARE tableCursor CURSOR
FOR 

select [x], [Value] from #help
OPEN tableCursor

--Get the first table name from the cursor
FETCH NEXT FROM tableCursor INTO @x , @Value

 WHILE @@FETCH_STATUS = 0
BEGIN
   
   
   INSERT  into #tabl
select [x], [Value] from #help

END

CLOSE tableCursor
DEALLOCATE tableCursor
9 окт 14, 13:35    [16681639]     Ответить | Цитировать Сообщить модератору
 Re: insert в цикле  [new]
Glory
Member

Откуда:
Сообщений: 104751
шерлок
Я не могу понять как сделать WHILE для каждой фамилии

Добавить еще один вложенный WHILE от 1 до @Value
9 окт 14, 13:37    [16681654]     Ответить | Цитировать Сообщить модератору
 Re: insert в цикле  [new]
o-o
Guest
declare @t table (col varchar(10), cnt int);
insert into @t values ('aaa', 5), ('bbb', 10);

select col
from @t t cross apply (select n from dbo.Nums where n <= cnt)a
---
col
aaa
aaa
aaa
aaa
aaa
bbb
bbb
bbb
bbb
bbb
bbb
bbb
bbb
bbb
bbb
9 окт 14, 13:38    [16681670]     Ответить | Цитировать Сообщить модератору
 Re: insert в цикле  [new]
шерлок
Guest
Msg 208, Level 16, State 1, Line 1
Invalid object name 'dbo.Nums'.
9 окт 14, 13:53    [16681784]     Ответить | Цитировать Сообщить модератору
 Re: insert в цикле  [new]
шерлок
Guest
шерлок,

Нашел решение

https://www.sql.ru/forum/315007/kak-zadvoit-ili-zatroit-zapisi-v-zaprose-iz-tablicy

Но там без условия, а мне нужно, чтобы количество зависело от фамилии
9 окт 14, 13:56    [16681808]     Ответить | Цитировать Сообщить модератору
 Re: insert в цикле  [new]
o-o
Guest
шерлок
Msg 208, Level 16, State 1, Line 1
Invalid object name 'dbo.Nums'.

нету -- заведите.

для лентяев во всех смыслах:
declare @t table (col varchar(10), cnt int);
insert into @t values ('aaa', 5), ('bbb', 10);

with nums as (
select number + 1 as n
from master..spt_values
where type = 'p'
)

select col
from @t t cross apply (select n from Nums where n <= cnt)a
9 окт 14, 14:20    [16682008]     Ответить | Цитировать Сообщить модератору
 Re: insert в цикле  [new]
шерлок
Guest
o-o,

Спасибо! Крою
9 окт 14, 14:23    [16682029]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить