select
项目,
第一季度 = sum(case when month(时间) between 1 and 3 then 金额 else 0 end),
第二季度 = sum(case when month(时间) between 4 and 6 then 金额 else 0 end),
第三季度 = sum(case when month(时间) between 7 and 9 then 金额 else 0 end),
第四季度 = sum(case when month(时间) between 10 and 12 then 金额 else 0 end)
from
表
group by
项目
order by
项目
项目,
第一季度 = sum(case when month(时间) between 1 and 3 then 金额 else 0 end),
第二季度 = sum(case when month(时间) between 4 and 6 then 金额 else 0 end),
第三季度 = sum(case when month(时间) between 7 and 9 then 金额 else 0 end),
第四季度 = sum(case when month(时间) between 10 and 12 then 金额 else 0 end)
from
表
group by
项目
order by
项目
Create Table 表(项目 varchar(10),金额 money,时间 varchar(10))
--插入数据
insert into 表
select '项目1',100,'2005-1-2' union
select '项目2',300,'2005-2-2' union
select '项目3',400,'2005-5-2' union
select '项目1',200,'2005-3-6' union
select '项目1',400,'2005-7-11' union
select '项目3',660,'2005-9-11' union
select '项目4',660,'2005-12-11'
select * from 表
--测试语句
select 项目,
第一季度 = sum(case (Month(时间)-1) / 3 when 0 then 金额 else 0 end),
第二季度 = sum(case (Month(时间)-1) / 3 when 1 then 金额 else 0 end),
第三季度 = sum(case (Month(时间)-1) / 3 when 2 then 金额 else 0 end),
第四季度 = sum(case (Month(时间)-1) / 3 when 3 then 金额 else 0 end)
from 表
group by 项目
--删除测试环境
Drop Table 表--结果
项目1 300.0000 .0000 400.0000 .0000
项目2 300.0000 .0000 .0000 .0000
项目3 .0000 400.0000 660.0000 .0000
项目4 .0000 .0000 .0000 660.0000
---------- ----------
30-6月 -05 1SQL> select SUM(decode(1,to_char(month,'q'),score,0)) 一季度,
2 SUM(decode(2,to_char(month,'q'),score,0)) 二季度,
3 SUM(decode(3,to_char(month,'q'),score,0)) 三季度,
4 SUM(decode(4,to_char(month,'q'),score,0)) 四季度
5 from aa
6 / 一季度 二季度 三季度 四季度
---------- ---------- ---------- ----------
0 1 0 0SQL>
Create Table TEST(项目 Nvarchar(10),金额 Int,时间 Varchar(10))
--插入数据
Insert Into TEST
Select N'项目1',100,'2005-1-2' Union
Select N'项目2',300,'2005-2-2' Union
Select N'项目3',400,'2005-5-2' Union
Select N'项目1',200,'2005-3-6' Union
Select N'项目1',400,'2005-7-11' Union
Select N'项目3',660,'2005-9-11' Union
Select N'项目4',660,'2005-12-11'
--测试
Select 项目,
第一季度 = SUM(Case DatePart(qq,时间) When 1 Then 金额 Else 0 End),
第二季度 = SUM(Case DatePart(qq,时间) When 2 Then 金额 Else 0 End),
第三季度 = SUM(Case DatePart(qq,时间) When 3 Then 金额 Else 0 End),
第四季度 = SUM(Case DatePart(qq,时间) When 4 Then 金额 Else 0 End)
From TEST
Group By 项目
--删除测试环境
Drop Table TEST--结果
/*
项目 第一季度 第二季度 第三季度 第四季度
项目1 300 0 400 0
项目2 300 0 0 0
项目3 0 400 660 0
项目4 0 0 0 660
*/