2015-03-23 3 views
-1

я следующая таблица:SQL генерировать новые строки

ShopId NumberOfOrders 
1  2 
2  3 
3  2 
4  0 

Примера результат:

ShopId OrderId 
1  NULL 
1  NULL 
2  NULL 
2  NULL 
2  NULL 
3  NULL 
3  NULL 

Как сделать запрос, который возвращает й количество строк для каждого магазина, где х зависит от NumberOfOrders?

+0

Какого СУБД вы используете? Postgres? Oracle? –

+0

SQL Server 2012 –

+1

Я думаю, он хочет две строки для shopID 1, 3 строки для shopID 2 и т. Д. – Nightmaresux

ответ

3

Вам нужен список номеров. spt_values - один из способов получить список целых чисел в SQL Server. Значения, вероятно, достаточно большие для этой цели:

with n as (
     select row_number() over (order by (select NULL)) as n 
     from master..spt_values s 
    ) 
select t.shopId, NULL as OrderId, n.n, t.NumberOfOrders 
from following t join 
    n 
    on n.n <= t.NumberOfOrders 

Примечания: КТР также можно записать в виде:

 select number as n 
     from master..spt_values s 
     where type = 'E' 
Смежные вопросы