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

Откуда:
Сообщений: 118
Существует таблица:

ID NAME quantity
____________________
1 Пупыркин NULL
2 Морковкин 1
3 Иванов 2
4 Петров 3
5 Сидоров 5

Необходимо сделать выборку из таблицы так чтобы запись повторялась столько раз какое число в поле quantity.

1 Морковкин
3 Иванов
3 Иванов
4 Петров
4 Петров
4 Петров
5 Сидоров
5 Сидоров
5 Сидоров
5 Сидоров
5 Сидоров
26 июл 16, 17:47    [19458434]     Ответить | Цитировать Сообщить модератору
 Re: Количество записей выборки зависит от значения поля  [new]
Sergey-ZZZ
Member

Откуда:
Сообщений: 118
Забыл добавить - не курсор
26 июл 16, 17:48    [19458440]     Ответить | Цитировать Сообщить модератору
 Re: Количество записей выборки зависит от значения поля  [new]
o-o
Guest
declare @t table (id int, s varchar(100), n int);
insert into @t values
(1, 'Пупыркин', NULL),
(2, 'Морковкин', 1),
(3, 'Иванов', 2),
(4, 'Петров', 3),
(5, 'Сидоров', 5);

select id, s
from @t cross apply (select top (isnull(n, 0)) * 
                       from sys.columns)a;
26 июл 16, 18:02    [19458499]     Ответить | Цитировать Сообщить модератору
 Re: Количество записей выборки зависит от значения поля  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Sergey-ZZZ,

DECLARE @Temp TABLE 
(
	Id		INT,
	Name		VARCHAR(255),
	Quantity	INT
)

INSERT INTO @Temp
(
	Id	,	
	Name	,	
	Quantity	
)
VALUES
(1,	'Пупыркин',	NULL),
(2,	'Морковкин',	1   ),
(3,	'Иванов	',	2   ),
(4,	'Петров	',	3   ),
(5,	'Сидоров',	5   )

DECLARE @X TABLE 
(
	I	INT
)

DECLARE @i INT = 1
WHILE @i < (SELECT MAX(Quantity) FROM @Temp)
BEGIN
	INSERT INTO @X(I) VALUES (@i)
	SET @i = @i + 1
END


SELECT 
*
FROM 
	@Temp	a
JOIN
	@X	b
ON
	b.I <= a.Quantity
ORDER BY
	Id,Name
26 июл 16, 18:03    [19458501]     Ответить | Цитировать Сообщить модератору
 Re: Количество записей выборки зависит от значения поля  [new]
3unknown
Member

Откуда: New York
Сообщений: 140
create table #tmp(name varchar(30),q int)

insert #tmp
values ('Ivanov',1),
('Larin',2),
('Petrov',3),
('Sidorov',5),
('Pupkin',8)



;WITH t (name,level)
AS
(
select name,q AS Level
from #tmp
 UNION ALL
 select t1.name,Level - 1
from #tmp t1
join t on t1.name = t.name
and  level >1
)
select name
from t
order by name

drop  table #tmp
26 июл 16, 18:16    [19458557]     Ответить | Цитировать Сообщить модератору
 Re: Количество записей выборки зависит от значения поля  [new]
Sergey-ZZZ
Member

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

Очень мне подходит (мне нужен только стандартный SQL), но Вы обратили внимание что у вас "Сидоров" повторяется 4 раза, а не 5, как в поле quantity?
26 июл 16, 19:19    [19458805]     Ответить | Цитировать Сообщить модератору
 Re: Количество записей выборки зависит от значения поля  [new]
Sergey-ZZZ
Member

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

Тоже мне не подойдет. У меня readshift (на Amazon), а там урезанные возможности и нет циклов, в которых бы я мог заполнить временную таблицу до MAX(Quantity).
26 июл 16, 19:36    [19458854]     Ответить | Цитировать Сообщить модератору
 Re: Количество записей выборки зависит от значения поля  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Sergey-ZZZ,
автор
которых бы я мог заполнить временную таблицу до MAX(Quantity).

так создайте таблицу с числами и все.

автор
Вы обратили внимание что у вас "Сидоров" повторяется 4 раза, а не 5, как в поле quantity?

промахнулся со знаком :)
27 июл 16, 08:52    [19459950]     Ответить | Цитировать Сообщить модератору
 Re: Количество записей выборки зависит от значения поля  [new]
Sergey-ZZZ
Member

Откуда:
Сообщений: 118
TaPaK,
Спасибо большое за помощь. Я так и сделал. Я знаю что более 10 не будет, поэтому создаю временную таблицу с цифрами 1-10.
27 июл 16, 08:58    [19459971]     Ответить | Цитировать Сообщить модератору
 Re: Количество записей выборки зависит от значения поля  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Sergey-ZZZ,

что мешает создать статическую 1-1кк? таки полезны довольно часто
27 июл 16, 09:02    [19459987]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить