是否可以在没有子选择的情况下对不同的行进行求和?

时间:2014-09-25 01:33:54

标签: sql sql-server

我想找到包裹物品的总数&对于给定的责任方和一组包,包装项目是未完成的。

我必须报告的表是在包级别进行的半卷,并重复我需要的数据。 这意味着一个简单的总和将不起作用。

我可以通过做一个不同的选择然后从中选择总和来解决这个问题。

我的问题是:
是否可以使用子选择执行相同的查询?
如果不使用子选择来解决问题有什么意义吗?

以下是查询示例:

SELECT
    Sum(Outstanding) as Outstanding,
    Sum(Total) as Total
FROM
(
    SELECT
        DISTINCT
        O as Outstanding,
        T as Total
    FROM
        PackageTotals
    WHERE
        Package in ('XYZ', 'ABC', 'LMN')
        AND Responsible = 'ZZ'
) Data

1 个答案:

答案 0 :(得分:1)

您的查询和执行此操作之间应该没有区别:

Select 
  sum(distinct outstanding) as outstanding,
  Sum(distinct total) as total
From
 packagetotals
Where
  package in ('xyz', 'ABC',  'LMN')
  And responsible = 'zz'

然而,这可能表明存在更大的数据问题

我认为你在这里找到的唯一区别就是可读性。我更喜欢我的可读性,但对于性能而言,我肯定可以忽略不计。

Here is a fiddle