--示例存储过程
create proc p_qry
@开始时间 datetime,
@结束时间 datetime,
@每组月数 int=4   --默认4个月一组
as
select 组=datediff(month,@开始时间,日期)/@每组月数
,平均值=avg(数字)
from 表
where 日期 between @开始时间 and @结束时间
group by datediff(month,@开始时间,日期)/@每组月数

解决方案 »

  1.   

    select year(日期) as 年,case when datepart(quarter,日期) in (1,2,3,4) then '1' 
     when datepart(quarter,日期) in (5,6,7,8) then '5'
     when datepart(quarter,日期) in (9,10,11,12) then '9'
     end as 月组,
     avg(数据字段) as 平均数据字段
    from 表
    group by year(日期),case when datepart(quarter,日期) in (1,2,3,4) then '1' 
     when datepart(quarter,日期) in (5,6,7,8) then '5'
     when datepart(quarter,日期) in (9,10,11,12) then '9'
     end 
      

  2.   

    我的方法跨年没有问题.日期是指你表中的日期字段,指"张含有日期的表,类型为datetime"
      

  3.   

    如果跨年的话,把日期都转换成与月数如何?
    SELECT DATEDIFF(mm,0,'2003-1-8')  --计算'2003-1-8'和“1900-01-01 00:00:00.000”这个日期之间的月数
    SELECT DATEDIFF(mm,0,getdate())  --计算当前日期和“1900-01-01 00:00:00.000”这个日期之间的月数
    SELECT DATEDIFF(mm,0,getdate())-DATEDIFF(mm,0,'2003-1-8')+1 --结束时间与开始时间月数的差
      

  4.   

    select  datediff('m','2004/01/01',seltdate)/3 as sel1,avg(test1)  from partic where seldate>='2004/01/01' and seldate<='2004/12/10' group by datediff('m','2004/01/01',seltdate)/3這是在查詢分析器裡的語句,提示我
    Server: Msg 1023, Level 15, State 1, Line 1
    指定於 datediff 的參數 1 無效。
    請問怎麼解決