我在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不是我的选择。
预期结果

您应该能够使用窗口函数
SELECT OrderID,
ContainerType,
COUNT(ContainerID) OVER (PARTITION BY OrderID, ContainerType) AS ContainerCOUNT,
ContainerID
FROM @OrderCoarntainers
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3390 次 |
| 最近记录: |