create table #aaaa
(
datet datetime,
value varchar(11)
);
insert into #aaaa values ('2013-10-23 09:00','0.5');
insert into #aaaa values ('2013-10-23 09:05','0.3');
insert into #aaaa values ('2013-10-23 09:10','0.5');
insert into #aaaa values ('2013-10-23 09:15','0.6');
insert into #aaaa values ('2013-10-23 09:20','0.1');
insert into #aaaa values ('2013-10-23 09:20','0.1');
insert into #aaaa values ('2013-10-23 09:30','0.2');
insert into #aaaa values ('2013-10-23 10:00','0.9');
insert into #aaaa values ('2013-10-23 10:05','0.3');
insert into #aaaa values ('2013-10-23 10:10','0.3');
insert into #aaaa values ('2013-10-23 10:20','0.3');
select * from #aaaa;
drop table #aaaa;
以上是我提供的测试SQL.
现在在 临时表中的 datet 数据应该是每5分钟就有一条数据。但是实际上表中的数据部是以每5分钟存储的。
请问大家,如何查询出的数据是以每5分钟为一条的数据。
比如上面 没有 10:15的数据,那么查询出的结果 10:15对应的value 是0 。
数据有可能是跨好几天的数据查询,求方案。。
------解决方案--------------------
搞个参照表来匹配就可以了
------解决方案--------------------
做一张参照表,每5分钟一条记录
------解决方案--------------------
你自己补上
--初始化100条数据
CREATE TABLE #t (datet DATETIME,id INT IDENTITY(1,1))
INSERT INTO #t(datet) VALUES('2013-10-23 09:00')
DECLARE @i INT
SET @i=1
WHILE @i<=100
BEGIN
INSERT INTO #t(datet)
SELECT DATEADD(mi,5,datet)
FROM #t
WHERE @i=id+1
SET @i=@i+1
END
--DROP TABLE #T
SELECT *
FROM #aaaa a right JOIN #t t ON t.datet = a.datet
/*
datet value datet id
----------------------- ----------- ----------------------- -----------
2013-10-23 09:00:00.000 0.5 2013-10-23 09:00:00.000 1
2013-10-23 09:05:00.000 0.3 2013-10-23 09:05:00.000 2
2013-10-23 09:10:00.000 0.5 2013-10-23 09:10:00.000 3
2013-10-23 09:15:00.000 0.6 2013-10-23 09:15:00.000 4
2013-10-23 09:20:00.000 0.1 2013-10-23 09:20:00.000 5
2013-10-23 09:20:00.000 0.1 2013-10-23 09:20:00.000 5
NULL NULL 2013-10-23 09:25:00.000 6
2013-10-23 09:30:00.000 0.2 2013-10-23 09:30:00.000 7
NULL NULL 2013-10-23 09:35:00.000 8
NULL NULL 2013-10-23 09:40:00.000 9
NULL NULL 2013-10-23 09:45:00.000 10
NULL NULL 2013-10-23 09:50:00.000 11
NULL NULL 2013-10-23 09:55:00.000 12
2013-10-23 10:00:00.000 0.9 2013-10-23 10:00:00.000 13
2013-10-23 10:05:00.000 0.3 2013-10-23 10:05:00.000 14
2013-10-23 10:10:00.000 0.3 2013-10-23 10:10:00.000 15
NULL NULL 2013-10-23 10:15:00.000 16
2013-10-23 10:20:00.000 0.3 2013-10-23 10:20:00.000 17