如何执行条件计数?

How to perform a conditional count?

我需要一些帮助来解决一个非常具体的问题(我是这么认为的),我希望它是可以解决的。

我有一个 table 看起来像这样:

cdts vehicle device
20211101 car1 deviceX
20211101 car1 deviceY
20211101 car1 deviceZ
20211101 car2 deviceX
20211101 car2 deviceY
20211101 car3 deviceX
20211101 car3 deviceY
20211102 car1 deviceX
20211102 car1 deviceY
20211102 car2 deviceZ
20211102 car2 deviceX
20211102 car2 deviceY
20211102 car3 deviceX
20211102 car3 deviceY

我需要获取一份列表,了解一辆汽车拥有 2 台设备或 3 台设备的频率,因此它应该如下所示:

vehicle 2 Devices 3 Devices
car1 1 1
car2 1 1
car3 2 0

我真的不知道该怎么做。我是否需要子查询,我可以使用 where 子句执行 count() 吗?

select vehicle 
     , sum(case when devicecount = 2 then 1 else 0 end) [2Devices]
     , sum(case when devicecount = 3 then 1 else 0 end) [3Devices]
from ( 
    select vehicle, count(device) devicecount
    from table
    group by vehicle,cdts
) t group by vehicle