按季度分组数据

id    transAmt      transDate             payToOffer  backToOrder
1      20.32002007-02-03 00:00:00.00000
2      23.32002007-03-03 00:00:00.00010
3     100.32002007-03-03 00:00:00.00000
4     200.32002007-05-03 00:00:00.00000
5     220.32002007-04-03 00:00:00.00010
6     10.32002007-05-03 00:00:00.00000
7     20.32002007-05-03 00:00:00.00000
8     20.32002007-06-03 00:00:00.00001
9     20.32002007-07-03 00:00:00.00000
10     20.32002007-07-03 00:00:00.00000
11     20.32002007-08-03 00:00:00.00001
12     20.32002007-09-03 00:00:00.00000
13     20.32002007-10-03 00:00:00.00000
14     20.32002007-10-03 00:00:00.00001
15     20.32002007-12-03 00:00:00.00000
16     20.32002007-12-03 00:00:00.00000
17     20.32002007-12-03 00:00:00.00001
18     20.32002007-12-03 00:00:00.00010

 

我想根据每季度来对transAmt求和,再根据

clearAmt  根据 payToOffer=1       or backToOrder=1

unclearAmt根据 payToOffer=0 and backToOrder=0

最后达到如下效果


puarter  clearAmt  unclearAmt  
1         23.3200   123.64
2         220.3200  251.28
3         20.32     60.96
4         60.96     40.64

 

 

 

declare @t table (id int,    transAmt   money,   transDate  datetime,            payToOffer  int,backToOrder int)
insert into @t  select  1,     20.3200, '2007-02-03 00:00:00.000', 0, 0 
union all          select 2,      23.3200, '2007-03-03 00:00:00.000', 1, 0 
union all          select 3,     100.3200, '2007-03-03 00:00:00.000', 0, 0 
union all          select 4,     200.3200, '2007-05-03 00:00:00.000', 0, 0 
union all          select 5,     220.3200, '2007-04-03 00:00:00.000', 1, 0 
union all          select 6,     10.3200, '2007-05-03 00:00:00.000', 0, 0 
union all          select 7,     20.3200, '2007-05-03 00:00:00.000', 0, 0 
union all          select 8,     20.3200, '2007-06-03 00:00:00.000', 0, 1 
union all          select 9,     20.3200, '2007-07-03 00:00:00.000', 0, 0 
union all          select 10,     20.3200, '2007-07-03 00:00:00.000', 0, 0 
union all          select 11,     20.3200, '2007-08-03 00:00:00.000', 0, 1 
union all          select 12,     20.3200, '2007-09-03 00:00:00.000', 0, 0 
union all          select 13,     20.3200, '2007-10-03 00:00:00.000', 0, 0 
union all          select 14,     20.3200, '2007-10-03 00:00:00.000', 0, 1 
union all          select 15,     20.3200, '2007-12-03 00:00:00.000', 0, 0 
union all          select 16,     20.3200, '2007-12-03 00:00:00.000', 0, 0 
union all          select 17,     20.3200, '2007-12-03 00:00:00.000', 0, 1 
union all          select 18,     20.3200, '2007-12-03 00:00:00.000', 1, 0

select
a=datepart(qq,transDate),
b=sum(case when paytooffer=1 or backtoorder =1 then transamt end),
c=sum(case when paytooffer=0 and backtoorder =0 then transamt end)
from @t group by datepart(qq,transDate)


/*
a                          b                 c
----------------------------------------------
1             23.3200                120.6400
2           240.6400               230.9600
3              20.3200              60.9600
4               60.9600             60.9600
*/ 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值