求助各位大神,帮个忙看看怎么做这个查询语句
上传图片太慢,小弟就用手打这个表的样子了。
表名:dbo.WR_CLCTPOT_B
id potcd tm q sumwq wat filteflag flag wqg
11720 14093006 2011-11-23 11:00 0.000 10391.000 0.000 null
上面的是表的字段是第一列的数据,现在要做一个查询:要求查出的数据时间是每个月第一天以及最后一天的8:00那个时间段的时间,如果那个时间没有,就顺延往后推,按离8:00最近的时间显示。补充一下,这个每个月,要求是这样的,比如现在是7月,要求查出的时间是6月的第一天8:00和最后一天8:00,如果现在变成8月了,那么数据要求就是7月的,以此类推,下面是网页上面对应的列,大家看看,还是手打。
起始时间 起始指数 终止时间 终止指数
(这里对应第一天8点) (对应的数据 sumwq) (这里是最后一天8点)
小弟实在对SQL语句不了解,求大家伸出友爱之手帮帮忙啊........谢谢了,谢谢了
[解决办法]
create table tb(tm datetime)
insert into tb values('2013-07-16 08:00:00')
insert into tb values('2013-06-01 08:00:00')
insert into tb values('2013-06-01 08:02:00')
insert into tb values('2013-06-30 07:00:00')
insert into tb values('2013-06-30 09:00:00')
select m.tm m_tm, n_tm = (select top 1 * from tb n where datediff(dd , m.tm , n.tm) = 0 and n.tm >= m.tm order by n.tm)
from
(
select convert(varchar(8),dateadd(mm,-1,getdate()),120)+'01 08:00:00' tm union
select dateadd(dd,-1,convert(varchar(8),getdate(),120)+'01 08:00:00') tm
) m
drop table tb
/*
m_tm n_tm
----------------------- -----------------------
2013-06-01 08:00:00.000 2013-06-01 08:00:00.000
2013-06-30 08:00:00.000 2013-06-30 09:00:00.000
(2 行受影响)
*/