我有下表,但我还没有能够按日期和卡片类型对它进行分组,它也应该对值进行求和...我因为id而认为有问题
OrderID | OrderDate | CCType | Processed
----------- ---------------------------
451 |2012-02-27 | AMEX | 10.56
452 |2012-02-27 | VISA | 20.00
453 |2012-02-27 | MASTER CARD | 5.00
454 |2012-02-27 | OTHER | 16.00
455 |2012-02-27 | AMEX | 10.00
456 |2012-02-26 | VISA | 11.00
457 |2012-02-26 | MASTER CARD | 12.00
457 |2012-02-26 | OTHER | 5.00
需要结束这样的事情
OrderDate | CCType | Processed
-----------------------------------------
2012-02-27 | AMEX | 20.56
2012-02-27 | VISA | 20.00
2012-02-27 | MASTER CARD| 5.00
2012-02-27 | OTHER | 16.00
2012-02-26 | AMEX | 0.00
2012-02-26 | VISA | 11.00
2012-02-26 | MASTER CARD| 12.00
2012-02-26 | OTHER | 5.00
我将不胜感激。
答案 0 :(得分:2)
你有没有试过这样的东西
select OrderDate ,ltrim(rtrim(CCType)) as CCType ,sum(Processed )
from [Order] group by OrderDate ,ltrim(rtrim(CCType))
答案 1 :(得分:2)
试试这个:
select OrderDate, CCType, Sum(Processed)
from [Order]
group by OrderDate, CCType
答案 2 :(得分:2)
棘手的部分是获得这一行
2012-02-26 AMEX 0,00
如果你不需要,其他答案都有你想要的。
declare @Order table
(
OrderID int,
OrderDate date,
CCType varchar(20),
Processed money
)
insert into @Order values
( 451, '2012-02-27', 'AMEX', 10.56),
( 452, '2012-02-27', 'VISA', 20.00),
( 453, '2012-02-27', 'MASTER CARD', 5.00),
( 454, '2012-02-27', 'OTHER', 16.00),
( 455, '2012-02-27', 'AMEX', 10.00),
( 456, '2012-02-26', 'VISA', 11.00),
( 457, '2012-02-26', 'MASTER CARD', 12.00),
( 457, '2012-02-26', 'OTHER', 5.00)
select D.OrderDate, C.CCType, sum(coalesce(T.Processed, 0)) as Processed
from (values('AMEX'),
('VISA'),
('MASTER CARD'),
('OTHER')) as C(CCType)
cross join (select distinct OrderDate
from @Order) as D(OrderDate)
left outer join @Order as T
on D.OrderDate = T.OrderDate and
C.CCType = T.CCType
group by D.OrderDate, C.CCType
order by D.OrderDate desc, C.CCType
结果:
OrderDate CCType Processed
---------- ----------- ---------------------
2012-02-27 AMEX 20,56
2012-02-27 MASTER CARD 5,00
2012-02-27 OTHER 16,00
2012-02-27 VISA 20,00
2012-02-26 AMEX 0,00
2012-02-26 MASTER CARD 12,00
2012-02-26 OTHER 5,00
2012-02-26 VISA 11,00