一条SQL查询语句,求代码解决方案
一条SQL查询语句,求代码
结果:
即 数据的日期为12月1号到6号,如果中间有空的日期(12月3号)那么它所对应的值就为上一个日期与下一个日期值的平均
(12月2号与12月4号的平均)
求语句:
------解决方案--------------------
- SQL code
create table tb(日期 datetime,TCH int,sdcch real) insert into tb select '2011-12-1',5,5 insert into tb select '2011-12-2',14,2 insert into tb select '2011-12-4',2,12 insert into tb select '2011-12-5',3,2 insert into tb select '2011-12-6',5,4 go
结果:
- SQL code
日期 tch sdcch 2011-12-1 5 5 2011-12-2 14 2 2011-12-3 8 7 2011-12-4 2 12 2011-12-5 3 2 2011-12-6 5 4
即 数据的日期为12月1号到6号,如果中间有空的日期(12月3号)那么它所对应的值就为上一个日期与下一个日期值的平均
(12月2号与12月4号的平均)
求语句:
------解决方案--------------------
- SQL code
create table tb(日期 datetime,TCH int,sdcch real) insert into tb select '2011-12-1',5,5 insert into tb select '2011-12-2',14,2 insert into tb select '2011-12-4',2,12 insert into tb select '2011-12-5',3,2 insert into tb select '2011-12-6',5,4 GO INSERT INTO tb SELECT a.日期+c.number AS 日期, (a.TCH+b.TCH)/2 AS TCH,(a.sdcch+b.sdcch)/2 AS sdcch FROM tb AS a CROSS APPLY (SELECT TOP 1 日期,TCH,sdcch FROM tb WHERE 日期>a.日期 ORDER BY 日期 asc) AS b CROSS JOIN master.dbo.spt_values AS c WHERE NOT EXISTS(SELECT 1 FROM tb WHERE 日期=a.日期+1) AND c.type='P' AND b.日期>a.日期+c.number AND c.number>0