求将一个范围的值一一列出来!
我有这样一张表,要求把表中的区段范围一一列出来如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
[解决办法]
if object_id('[A]') is not null drop table [A]gocreate table [A]([name] varchar(4),[name2] varchar(4),[beginnum] int,[endnum] int)insert [A]select '东东','嘻嘻',2000,30000 union allselect '东东','哈哈',40000,60000 union allselect '龙龙','菜菜',1000,20000 union allselect '呼呼','哄哄',283192,1234320go;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 numidfrom ajoin sn b on a.beginnum+b.rn-1<=a.endnumorder by name,name2,numid