有个表 里面有很多数据 不过每行数据都记录了时间数据这个样子的编号 日期 故障件名称 故障原因 备注
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 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
(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 '四季度'
解决了
from tb
group by DATENAME (qq,日期)
order by DATENAME (qq,日期)
FROM @t GROUP BY DATEPART(QQ,[日期])
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 行受影响)