首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

补齐间距一天的数据

2013-04-21 
补齐间隔一天的数据create table tb(A nvarchar(50),B int)insert into tbselect 2012/12/03 16:00:00,

补齐间隔一天的数据


create table tb
(
A nvarchar(50),
B int
)

insert into tb
select '2012/12/03 16:00:00','12' union
select '2012/12/03 16:30:00','22' union
select '2012/12/03 17:00:00','21' union
select '2012/12/03 17:30:00','22' union
select '2012/12/03 18:00:00','21' union
select '2012/12/03 18:30:00','22' union
select '2012/12/03 19:00:00','25' union
select '2012/12/03 19:30:00','27' union
select '2012/12/03 23:00:00','28' union
select '2012/12/03 23:30:00','22' union
select '2012/12/04 00:30:00','22' union
select '2012/12/04 01:00:00','22' union
select '2012/12/04 01:30:00','22' union
select '2012/12/04 02:00:00','28' union
select '2012/12/04 02:30:00','22' union
select '2012/12/04 03:00:00','22' union
select '2012/12/04 03:30:00','22' union
select '2012/12/04 04:00:00','22' union
select '2012/12/04 04:30:00','22' union
select '2012/12/04 05:00:00','22' 

select * from tb

[解决办法]
用CTE生成日期左联
[解决办法]
方法很多  自己看看吧
[解决办法]
create table tb
(
A nvarchar(50),
B int
)
 
insert into tb
select '2012/12/03 16:00:00','12' union
select '2012/12/03 16:30:00','22' union
select '2012/12/03 17:00:00','21' union
select '2012/12/03 17:30:00','22' union
select '2012/12/03 18:00:00','21' union
select '2012/12/03 18:30:00','22' union
select '2012/12/03 19:00:00','25' union
select '2012/12/03 19:30:00','27' union
select '2012/12/03 23:00:00','28' union
select '2012/12/03 23:30:00','22' union
select '2012/12/04 00:30:00','22' union
select '2012/12/04 01:00:00','22' union
select '2012/12/04 01:30:00','22' union
select '2012/12/04 02:00:00','28' union
select '2012/12/04 02:30:00','22' union
select '2012/12/04 03:00:00','22' union
select '2012/12/04 03:30:00','22' union
select '2012/12/04 04:00:00','22' union
select '2012/12/04 04:30:00','22' union
select '2012/12/04 05:00:00','22' 
 
--select * from tb

go

declare @dt1 datetime,@dt2 datetime
select @dt1=min(A),@dt2=max(A) from tb
;with a
as
(
select @dt1 as dt
union all
select dt from a where dt<@dt2
)
insert into B
select dt,0
from a 
left join tb as b on a.A=b.A
where b.A is null
option(MAXRECURSION 0)

------解决方案--------------------


 

热点排行
Bad Request.