我有一张桌子:
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
如何为每个商店返回x个行的查询,其中x取决于NumberOfOrders?
答案 0 :(得分: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
注意:CTE也可以写成:
select number as n
from master..spt_values s
where type = 'E'