有个表 里面有很多数据  不过每行数据都记录了时间数据这个样子的编号    日期      故障件名称   故障原因   备注
1      2011-1-1    你猜       你猜猜    你猜猜猜
2      2011-5-1    你猜       你猜猜    你猜猜猜
3      2011-7-1    你猜       你猜猜    你猜猜猜
4      2011-12-1   你猜       你猜猜    你猜猜猜通过一条SQL语句查询后(根据系统时间得到当年)
得到第一季度多少条  第二季度多少条   第三季度多少条 第四季度过少条  结果像这样
1
1
1
1
或者这样
1   1    1    1通过一条SQL语句查询后(不管哪一年  只要是那个季度的全部查询出来)
得到第一季度多少条  第二季度多少条   第三季度多少条 第四季度过少条  结果像这样
1
1
1
1
或者这样
1   1    1    1

解决方案 »

  1.   

    select 
    (select count(*)
     from 表名
     where (datepart(mm,时间列名)>=1 and datepart(mm,时间列名)<=3 and datepart(yy,时间列名)=year(getdate()))) as '一季度',
    (select count(*)
     from 表名
     where (datepart(mm,时间列名)>=4 and datepart(mm,时间列名)<=6 and datepart(yy,时间列名)=year(getdate()))) as '二季度',
    (select count(*)
     from 表名
     where (datepart(mm,时间列名)>=7 and datepart(mm,时间列名)<=9 and datepart(yy,时间列名)=year(getdate()))) as '三季度',
    (select count(*)
     from 表名
     where (datepart(mm,时间列名)>=10 and datepart(mm,时间列名)<=12 and datepart(yy,时间列名)=year(getdate()))) as '四季度'
    解决了 
      

  2.   

    SELECT DATEPART(QQ,[日期]) '季度', COUNT(1) '结果' FROM @t GROUP BY DATEPART(QQ,[日期])
      

  3.   

    select DATENAME (qq,日期),count(*)
    from tb 
    group by DATENAME (qq,日期) 
    order by DATENAME (qq,日期) 
      

  4.   

    SELECT DATEPART(QQ,[日期]) '季度', COUNT(1) '结果'
    FROM @t GROUP BY DATEPART(QQ,[日期])
      

  5.   


    Declare @T Table(
    编号 Int identity(1,1) Primary Key,
    日期 DateTime,
    故障件名称 Varchar(50),
    故障原因 Varchar(50),
    备注 Varchar(50)
    )Insert Into @T
    Select '2011-1-1', '你猜', '你猜猜', '你猜猜猜'
    Union Select '2011-5-1', '你猜', '你猜猜', '你猜猜猜'
    Union Select '2011-7-1', '你猜', '你猜猜', '你猜猜猜'
    Union Select '2011-12-1', '你猜', '你猜猜', '你猜猜猜'
    Union Select '2011-9-1', '你猜', '你猜猜', '你猜猜猜'
    Union Select '2011-6-1', '你猜', '你猜猜', '你猜猜猜'--第一种显示格式
    Select 季度, COUNT(编号) 次数
    From (
    Select 编号, (Month(日期)-1)/3 +1 AS 季度
    From @T
    ) T
    Group By 季度--第二种显示格式
    Select 第一季度=Sum(Case When (季度 = 1) Then 次数 Else 0 End),
    第二季度=Sum(Case When (季度 = 2) Then 次数 Else 0 End) ,
    第三季度=Sum(Case When (季度 = 3) Then 次数 Else 0 End) ,
    第四季度=Sum(Case When (季度 = 4) Then 次数 Else 0 End) 
    From (
    Select 季度, COUNT(编号) 次数
    From (
    Select 编号, (Month(日期)-1)/3 +1 AS 季度
    From @T
    ) T
    Group By 季度
    ) T0
    运行结果(6 行受影响)
    季度          次数
    ----------- -----------
    1           1
    2           2
    3           2
    4           1(4 行受影响)第一季度        第二季度        第三季度        第四季度
    ----------- ----------- ----------- -----------
    1           2           2           1(1 行受影响)