同一查询中的SQL Server多个计数

时间:2015-02-26 16:32:57

标签: sql-server tsql group-by

我确信有一种简单的方法可以做到这一点,但我一直在努力解决这个问题......

假设我有一个这样的订单表:

OrderId   OrderStatus   DriverId  TripId
-------   -----------   ------    ----
 1         Available     5         2
 2         Available     5         2
 3         Available     5         2
 4         Delivered     5         2
 5         Delivered     5         3
 6         Delivered     6         2

我想通过每个Driver和Trip将一个额外的列分组,显示OrderStatus等于'可用'的计数。所以,例如

TotalOrderCountInTrip   DriverId   TripId  AvailableOrdersCount
---------------------   --------   ------  --------------------
 4                       5          2       3
 1                       6          2       0

我已经做到这一点,但我无法弄清楚如何添加AvailableOrdersCount列:

select count(*) TotalOrderCountInTrip, dos.DriverId, dos.TripId
from DriverOrderSet dos (nolock)
group by
   dos.DriverId,
   dos.TripId

1 个答案:

答案 0 :(得分:4)

以列添加:

sum(case when OrderStatus = 'Available' then 1 else 0 end)