请问大家这个存储过程怎么写?有点难度

ihyinger 2005-03-07 11:40:15
存储过程有两个参数:
par1,par2,代表一个时间范围, 假设par1=200508 , par2=200602
现在需要新建成如下列结构的表:
列1,列2,200508,200509,200510,200511,200512,200601,200602
在这个表里面,从第三列开始,列名和列的数量是根据那两个参数的时间范围而生成的。
请问这个存储过程应该怎么写?
...全文
82 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ihyinger 2005-03-07
  • 打赏
  • 举报
回复
谢谢大家。我下去好好研究研究 结贴
zarge 2005-03-07
  • 打赏
  • 举报
回复
create proc p_test
@par1 varchar(6),
@par2 varchar(6)
as
declare @begin datetime, @end datetime
declare @sql varchar(8000)
select @begin = cast( @par1 + '01' as datetime ), @end = cast( @par2 + '01' as datetime )

set @sql = 'create table #tmp( 列1 类型, 列2 类型'
while( @begin <= @end ) begin
select @sql = ', [' + convert( varchar(6), @begin, 112 ) + '] 类型'
set @begin = dateadd( m, 1, @begin )
end
set @sql = @sql + ' )'

--print @sql
exec( @sql )
flybox728 2005-03-07
  • 打赏
  • 举报
回复
做个循环
月数累加
substring(convert(char,dateadd(m,1,@par1),112),1,6)

create table ...
zjcxc 元老 2005-03-07
  • 打赏
  • 举报
回复

create proc p_create
@tbname sysname, --要创建的表名
@dt1 datetime, --开始时间
@dt2 datetime --结束时间
as
declare @s nvarchar(4000)
set @s='create '+quotename(@tbname)+'(
列1 int,
列2 int'
while datediff(month,@dt1,@dt2)>=0
select @s=@s+N',
'+quotename(convert(char(6),@dt1,112))
,@dt1=dateadd(month,1,@dt1)
exec(@s+N')')

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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