SQL 生成新行
SQL generate new rows
我有一个关注 table:
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
如何查询每个商店的 returns x 行数,其中 x 取决于 NumberOfOrders?
您需要一个号码列表。 spt_values
是在 SQL 服务器中获取整数列表的一种方法。对于此目的,值可能足够大:
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'
我有一个关注 table:
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
如何查询每个商店的 returns x 行数,其中 x 取决于 NumberOfOrders?
您需要一个号码列表。 spt_values
是在 SQL 服务器中获取整数列表的一种方法。对于此目的,值可能足够大:
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'