【问题标题】:Running Value CountDistinct and Logic Expression?运行值 CountDistinct 和逻辑表达式?
【发布时间】:2020-03-13 01:11:22
【问题描述】:

我有这样的原始数据。

Original Data

我需要用它创建两个报告,这是第一个报告:

First Report

运行值可以用这个表达式来实现 RunningValue(Fields!City.Value+Fields!Month.Value,CountDistinct,"Region")

我需要的第二份报告是这样的:

Second Report

我可以做些什么来为运行值添加逻辑,这样它就可以避免 Sum(Amount) 为零的行编号?

【问题讨论】:

    标签: reporting-services ssrs-2008 ssrs-2012 ssrs-2008-r2 ssrs-tablix


    【解决方案1】:

    我不确定您是否可以使用 RunningValue 执行此操作,其他人可能知道一种方法。

    我所做的是将逻辑移到查询中。

    我复制了一些数据以匹配您的最终报告编号(您的示例数据与示例报告输出不匹配)。

    这是我使用的示例数据。

    DECLARE @t TABLE(Region varchar(10), City varchar(10), MonthID int, Amount int)
    INSERT INTO @t VALUES
    ('Asia', 'Tokyo', 4, 1000),
    ('Asia', 'Tokyo', 4, 500),
    ('Asia', 'Tokyo', 5, 2000),
    ('Asia', 'Tokyo', 5, -2000),
    ('Asia', 'Tokyo', 6, 1000),
    ('Asia', 'Tokyo', 6, -500),
    ('Asia', 'Bangkok', 4, 500),
    ('Asia', 'Bangkok', 4, 500),
    ('Asia', 'Bangkok', 5, 3000),
    ('Asia', 'Bangkok', 5, -500),
    ('Asia', 'Bangkok', 6, -750),
    ('Asia', 'Bangkok', 6, 750)
    
    SELECT 
            *
            , ROW_NUMBER() OVER(PARTITION BY Region, City ORDER BY MonthID) as RowN1
            , ROW_NUMBER() OVER(PARTITION BY (CASE Amount WHEN 0 THEN 0 ELSE 1 END), Region, City ORDER BY MonthID) as RowN2
        FROM 
            (
            SELECT 
                    Region, City, MonthID
                    , SUM(Amount) AS Amount
                FROM @t
                GROUP BY Region, City, MonthID
            ) x
            ORDER BY Region, City DESC, MonthID
    

    我使用 ROW_NUMBER 函数为两个报告分配行号。

    第一个“RowN1”是城市内的简单行号

    第二个“RowN2”做同样的事情,但它对任何零值进行分区,因此它们与其他数据不在同一个分区中。

    这为我们提供了以下数据集

    现在您可以使用一个简单的表格在您的第一个使用 RowN1 的报告中显示结果

    在您的第二份报告中,将 RowN2 与表达式一起使用

    =IIF(Fields!Amount.Value=0, Nothing, Fields!RowN2.Value)
    

    如果金额为零,这只会强制显示一个空白。

    我这样做了,得到了以下结果。

    注意:我在数据中使用月份数字只是为了方便排序,在报告中我使用=MonthName(Fields!MonthID.Value) 来显示实际名称。

    【讨论】:

      猜你喜欢
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      相关资源
      最近更新 更多