选择不分组的计数

LCJ*_*LCJ 3 sql-server

我在SQL Server 2005. 一个订单可以有多个容器。容器可以是塑料的或木头的(未来可能会出现新类型)。

我需要列出以下列 -

OrderID, ContainerType, ContainerCOUNT and ContainerID.
Run Code Online (Sandbox Code Playgroud)

由于我还需要列出 ContainerID,因此以下分组方法将不起作用。

DECLARE @OrderCoarntainers TABLE (OrderID INT, ContainerID INT, ContainerType VARCHAR(10))
INSERT INTO @OrderCoarntainers VALUES (1,101,'Plastic')
INSERT INTO @OrderCoarntainers VALUES (1,102,'Wood')
INSERT INTO @OrderCoarntainers VALUES (1,103,'Wood')
INSERT INTO @OrderCoarntainers VALUES (2,104,'Plastic')

SELECT OrderID,ContainerType,COUNT(DISTINCT ContainerID) AS ContainerCOUNT
FROM @OrderCoarntainers
GROUP BY OrderID,ContainerType
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳方法是什么?

注意:升级SQL Server version不是我的选择。

预期结果

在此处输入图片说明

Adr*_*der 7

您应该能够使用窗口函数

SELECT  OrderID,
        ContainerType,
        COUNT(ContainerID) OVER (PARTITION BY OrderID, ContainerType) AS ContainerCOUNT,
        ContainerID
FROM    @OrderCoarntainers
Run Code Online (Sandbox Code Playgroud)