有一张表 id
date
num
11
2008-2-1 231
11
2008-10-231231654
32
2008-3-4
312123
32
2008-12-5 1321
通过语句补充数据
11
2008-1-1
null
11
2008-1-2
null
11
一直往下
null
就是没有日期的数据,在同一个id后面要求时间连续,没有的数据以空填入
要写怎样的sql语句 下面这个段错在哪里,怎么改,或者写下新的
declare @id varchar(50)--声明id变量
declare @date datetime--声明日期变量
declare @tempdate datetime--声明临时日期变量
declare addDatas cursor--声明一个游标
for select id,min(date) from tableName group by id
open addDatas--打开游标
fetch next from addDatas into @id,@date--取下一行数据到变量中
while @@fetch_status=0--如果有数据
begin
set @tempdate=dateadd(dd,1,@date)--临时日期变量赋值上一日期变量的天数加1
while datediff(mm,@date,@tempdate)=0--如果和上一日期是同一个月,则开始循环增加
begin
declare @countNum int--声明统计变量
select @countNum =count(*) from tableName where id=@id and date=@tempdate
if isnull(@countNum,0) <=0--如果该id下的该日期不存在则插入
begin
exec('insert into tableName(id,date,num) values('+@id+','+@tempdate+',null)')
end
set @date=@tempdate
end
fetch next from addDatas into @id,@date
end
close addDatas--关闭游标
deallocate addDatas--释放游标
程序运行不报错,一直运行,好像是死循环了
高手给写一个具体点的
|