求将一个范围的值一一列出来!
我有这样一张表,要求把表中的区段范围一一列出来如B表:
A表:
name  name2  beginnum  endnum
东东   嘻嘻   2000       30000
东东  哈哈    40000      60000
龙龙  菜菜    1000       20000
呼呼  哄哄    283192     1234320
B表:
name    name2    beginnum     endnum    numid
东东    嘻嘻     2000          30000    2000
东东    嘻嘻     2000          30000    2001
东东    嘻嘻     2000          30000    2002
东东    嘻嘻     2000          30000    2003
东东    嘻嘻     2000          30000    2004
......
东东    嘻嘻     2000          30000    30000
东东    哈哈     40000         60000    40000
东东    哈哈     40000         60000    40001
东东    哈哈     40000         60000    40002
东东    哈哈     40000         60000    40003
东东    哈哈     40000         60000    40004
东东    哈哈     40000         60000    40005
东东    哈哈     40000         60000    40006
......
东东    哈哈     40000         60000    60000
龙龙    菜菜      1000         20000    1000
龙龙    菜菜      1000         20000    1001
龙龙    菜菜      1000         20000    1002
龙龙    菜菜      1000         20000    1003
......
龙龙    菜菜      1000         20000    20000
呼呼    哄哄     283192        1234320  283192
呼呼    哄哄     283192        1234320  283193
呼呼    哄哄     283192        1234320  283194
呼呼    哄哄     283192        1234320  283195
呼呼    哄哄     283192        1234320  283196
......
呼呼    哄哄     283192        1234320  1234320   
------解决方案--------------------
SQL code
if object_id('[A]') is not null drop table [A]
go
create table [A]([name] varchar(4),[name2] varchar(4),[beginnum] int,[endnum] int)
insert [A]
select '东东','嘻嘻',2000,30000 union all
select '东东','哈哈',40000,60000 union all
select '龙龙','菜菜',1000,20000 union all
select '呼呼','哄哄',283192,1234320
go
;with sn as(
select top 1000000 rn=row_number() over(order by getdate()) from sys.objects,sys.columns
)
select a.*,a.beginnum+b.rn-1 as numid
from a
join sn b on a.beginnum+b.rn-1<=a.endnum
order by name,name2,numid