SQL Aggregation With Condition on aggregate value

时间:2013-06-24 08:48:40

标签: sql-server subquery aggregate-functions

我想从表NetQuatity中获取BillDetails的汇总,其中此聚合值应为非零。我写了一个查询,如下所示。但感觉它没有优化。有没有人可以折射这个。任何尝试都将受到赞赏。

SELECT * FROM
(
    SELECT DISTINCT CustId, Name, SUM(NetQuantity) OVER(PARTITION BY CustId, Name) AS Quantity
        FROM BillDetails
) T WHERE Quantity <> 0

1 个答案:

答案 0 :(得分:0)

无法优化此查询,这是获取这些结果的唯一方法。如果您的表上有适当的索引,则不会出现性能问题。 已更新 对于预过滤零值行,您可以使用此查询:

SELECT * FROM(
SELECT DISTINCT CustId, Name, SUM(NetQuantity) OVER(PARTITION BY CustId, Name) AS Quantity
    FROM BillDetails
    WHERE NetQuantity <> 0) T WHERE Quantity <> 0