我在 SQL Server 2005
中有下表.一个订单可以有多个容器。容器可以是塑料的或木头的( future 可能会出现新类型)。
我需要列出以下列 -
OrderID, ContainerType, ContainerCOUNT and ContainerID.
由于我还需要列出 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
实现这一目标的最佳方法是什么?
注意:升级
SQL Server version
对我来说不是一个选择。预期结果
最佳答案
您应该可以使用 windowed function
SELECT OrderID,
ContainerType,
COUNT(ContainerID) OVER (PARTITION BY OrderID, ContainerType) AS ContainerCOUNT,
ContainerID
FROM @OrderCoarntainers
关于sql-server - 选择不分组的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23051591/