【问题标题】:Trying to sum distinct values SQL试图对不同的值求和 SQL
【发布时间】:2013-08-15 14:25:59
【问题描述】:

我无法为 SSRS 中的单元格计算一个值,该值应该是不同值的总和。我有一个类似于以下屏幕截图的 SSRS 报告:

我无法获得红色值(11.25 美元)。我基本上需要根据不同的 Tracking #s 来计算船舶成本。因此,有两个不同的跟踪编号,一个的船舶成本为 5.25 美元,另一个为 6.00 美元,因此以红色显示的总数应为 11.25 美元。但我无法在 SSRS 中实现这一点,也无法在 SQL 查询中解决。

我正在考虑一个子查询(我知道下面的 SQL 无效):

(SELECT SUM([Ship Cost]) WHERE [Tracking #] IS DISTINCT) AS [Ship Cost]

但是我不知道怎么写。

【问题讨论】:

    标签: sql reporting-services distinct-values


    【解决方案1】:

    试试类似的东西

    从中选择总和(运费) (从表中选择不同的跟踪#,shipcost)

    干杯

    【讨论】:

      【解决方案2】:

      先获取不同的列表...

      SELECT SUM(SQ.COST)
      FROM
      (SELECT DISTINCT [Tracking #] as TRACK,[Ship Cost] as COST FROM YourTable) SQ
      

      【讨论】:

        【解决方案3】:

        您可以执行以下操作:

        SELECT SUM(distinct [Ship Cost]) . . .
        

        但是,我不建议这样做。您可以拥有两件成本相同的物品,但只会计算一件。

        更好的方法是为每个Tracking # 选择一个值,使用row_number() 函数:

        select SUM(case when seqnum = 1 then [Ship Cost] end)
        from (select t.*,
                     row_number() over (partition by [Order #], [Tracking #]
                                        order by (select NULL)
                                       ) as seqnum
              . . .
             ) t
        

        【讨论】:

        • 嗨@Gordon Linoff,您似乎有一个很好的解决方案。我无法完全让您给出的查询正常工作,但我使用 ROW_NUMBER 函数做了类似的事情。我的报告现在有了新的输出。屏幕截图中的红色值是使用 SSRS 中的以下表达式计算得出的: =SUM(IIF(Fields!RowNumber.Value = 1, Fields!WEIGHT.Value, 0)) 但是,对于那些超过1 项。对我来说仍然没有意义。您知道如何修改表达式以使报告输出正确吗?
        • @kyle_13 。 . .我认为您应该问另一个问题,提供有关样本数据和预期结果的信息。
        • 感谢@Gordon Linoff,这就是我最终要做的,在这里得到了解决方案stackoverflow.com/questions/18236373/…。是报告中的数据转换问题。
        • 我想知道这个解决方案与@Declan_K 发布的内容相比是否有任何优势。
        • @GordonLinoff @DavidFaivre 我实际上认为这应该是公认的答案。我看到的主要优点是它完全独立于查询的其余部分。也就是说,@Declan_K 的解决方案需要将DISTINCT 添加到整个子查询中,因此它只为每个跟踪号返回一条记录,但如果您想包含来自会产生重复行的连接表中的数据,这是不可行的。此解决方案允许原始查询结构保持不变。 +1
        猜你喜欢
        • 1970-01-01
        • 2015-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多