日期:2014-05-18 浏览次数:20645 次
CREATE TABLE #tb(FData datetime,FNum int) INSERT INTO #tb select '2011-1-1',100 UNION ALL -- 均值 100 select '2012-1-2',100 UNION ALL select '2012-1-25',200 UNION ALL -- 均值 150 select '2012-2-3',100 UNION ALL select '2012-2-25',200 UNION ALL -- 均值 150 select '2012-2-26',100 UNION ALL select '2012-3-7',100 UNION ALL -- 均值 100 select '2012-4-9',200 UNION ALL -- 均值 200 select '2012-11-10',200 UNION ALL -- 均值 200 select '2012-11-26',100 UNION ALL select '2012-12-31',200 -- 均值 150 -- 月份均值查询范围:上月26-本月25,12月份:11月26-12月31,1月份:1月1日-1月25日 select * from #tb union select Max(FData),avg(FNum) from #tb --怎么查出结果是类似上面 记录 均值 记录 均值 的显示出来
;with bnsr as ( select *, case when month(fdata)!=12 and datepart(dd,fdata)>25 then dateadd(mm,1,fdata) else fdata end as td from #tb ) select case when len(fdata)=7 then '' else fdata end as FData,FNum from ( select convert(varchar(7),td,120) as px,convert(varchar(10),fdata,120) as fdata,FNum from bnsr union all select convert(varchar(7),td,120) as px,convert(varchar(7),td,120) as tm,avg(fnum) as fnum from bnsr group by convert(varchar(7),td,120) ) t2 order by px,len(fdata) desc,fdata /** FData FNum ---------- ----------- 2011-01-01 100 100 2012-01-02 100 2012-01-25 200 150 2012-02-03 100 2012-02-25 200 150 2012-02-26 100 2012-03-07 100 100 2012-04-09 200 200 2012-11-10 200 200 2012-11-26 100 2012-12-31 200 150 (18 行受影响) **/