Mssql 中怎么自动增加行

shaoming01 2012-09-28 05:10:12
比如我有一行记录
姓名 号码开始 号码结束 
张三 1    1
李四 2 5
王二麻子 6 10

我想要创建一个这样的视图
张三 1
李四 2
李四 3
李四 4
李四 5
王二麻子 6
王二麻子 7
王二麻子 8
王二麻子 9
王二麻子 10
请问有什么办法可以做到

...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaoming01 2012-09-28
  • 打赏
  • 举报
回复
感谢正男高手,太牛X了,上面的兄弟用的动态插入表的方法我没测能不能实现,不过也很感谢你哦。
zhengnan2012 2012-09-28
  • 打赏
  • 举报
回复
DECLARE @t TABLE(n VARCHAR(10),s INT,e INT);
INSERT INTO @t SELECT '张',1,1 UNION ALL SELECT '李',2,5 UNION ALL SELECT '王',6,10;

SELECT a.n,b.number FROM @t a JOIN master..spt_values b ON b.number BETWEEN a.s AND a.e
WHERE b.type='p'
--小F-- 2012-09-28
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- Author :fredrickhu(小F,向高手学习)
-- Date :2012-09-28 17:16:37
-- Version:
-- Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (Intel X86)
-- Apr 22 2011 11:57:00
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition on Windows NT 6.1 <X64> (Build 7600: ) (WOW64)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([姓名] varchar(8),[号码开始] int,[号码结束] int)
insert [tb]
select '张三',1,1 union all
select '李四',2,5 union all
select '王二麻子',6,10
--------------开始查询--------------------------
select a.姓名,b.number from tb a, master..spt_values b where number between 号码开始 and 号码结束 and type='p'
----------------结果----------------------------
/* 姓名 number
-------- -----------
张三 1
李四 2
李四 3
李四 4
李四 5
王二麻子 6
王二麻子 7
王二麻子 8
王二麻子 9
王二麻子 10

(10 行受影响)

*/
shaoming01 2012-09-28
  • 打赏
  • 举报
回复
可以说得具体些吗?我sql不是那么精通呢
--小F-- 2012-09-28
  • 打赏
  • 举报
回复
MASTER..SPT_VALUES

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧