sql-server - 选择不分组的计数

标签 sql-server

我在 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对我来说不是一个选择。

预期结果

enter image description here

最佳答案

您应该可以使用 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/

相关文章:

c# - 如何在运行时在 SQLServer 模式下为 sessionState 更改 sqlConnectionString?

SQL Server : how to use alias in update statement?

sql-server - 在 SQL 中拆分和连接值

sql-server - 为什么 NULL 读取在我的 SQL 跟踪中如此之高?

SQL 多个 LIKE 语句

c# - 将实体(和相应的表)添加到 EF DB-first 模型

sql-server - 如何通过累积连接获取 SQL 中字符串值的分组

sql - 'recurring tasks' 的设计选项

sql - 从没有连接条件的两个表中选择数据,t-sql

sql - 在此过程中如何将小数小时数转换为小时数和分钟数