【问题标题】:Create a SSRS Report with calculated row使用计算行创建 SSRS 报告
【发布时间】:2020-02-26 08:11:29
【问题描述】:

我创建了一个显示以下信息的报告:

但我需要在每次“Turno”更改时添加一个带有计算字段的新行,并在表格末尾添加另一行,如下所示:

这是我第一次创建这样的报告,因此我们将不胜感激, 谢谢。

编辑。 建议的答案:Adding subtotals to SSRS report tablix 对我不起作用。 这个答案将所有“NOCHE”分组,然后是所有“MAÑANA”,然后是所有“TARDE”,但是当“Turno”在下一行发生变化时,我需要分组,而不是所有具有相同 Turno 的记录。提前谢谢,对不起我的英语。

【问题讨论】:

  • 这能回答你的问题吗? Adding subtotals to SSRS report tablix
  • Thx @Nick.McDermaid 但它没有帮助,与报告中的示例一样,首先显示所有“Mañana”,然后所有“Tarde”,然后所有“Noche”,但我需要显示示例中的记录,我的意思是首先所有“Noche”直到更改,添加一行并以“Mañana”开头,....对不起我的英语
  • 你需要一些东西来订购它,我想那是id。您可以使用许多计算(在附加列中)来识别事情何时发生变化。不幸的是,我面前没有 SSRS 可以尝试

标签: visual-studio reporting-services


【解决方案1】:

可能有一种方法可以直接在 SSRS 中执行此操作,但如果可能,我会尝试在您的数据集查询中执行此操作。

以下查询会重新创建您的数据集,然后添加一个额外的列 GroupByID,然后您可以在报表中使用它来轻松地对数据进行分组。

查询的第一部分只是产生一些数据,您只需要主要的 SELECT 部分,您可以将 @t 替换为您的表名。

DECLARE @t TABLE(Relevo char(1), ID int IDENTITY(1,1), Turno varchar(10), TT float)

INSERT INTO @t(Relevo, Turno, TT) VALUES
('A', 'NOCHE', 0.085),('A', 'NOCHE', 0.1),('A', 'NOCHE', 0.099),('A', 'NOCHE', 0.055),('A', 'NOCHE', 0.07),
('A', 'NOCHE', 0.076),('A', 'NOCHE', 0.102),('A', 'MANANA', 0.06),('A', 'MANANA', 0.065),('A', 'MANANA', 0.064),
('A', 'MANANA', 0.126),('A', 'MANANA', 0.136),('A', 'MANANA', 0.107),('A', 'NOCHE', 0.059),('A', 'NOCHE', 0.121),
('A', 'NOCHE', 0.063),('A', 'NOCHE', 0.055),('A', 'NOCHE', 0.056),('A', 'NOCHE', 0.085)

-- Change @t below for the name of your table
SELECT z.Relevo, z.ID, z.Turno, z.TT, MIN(z.GroupByID) AS GroupByID
    FROM(
        SELECT
            a.*, b.id  AS GroupByID
        FROM @t a 
            LEFT JOIN 
            (SELECT * FROM (
                SELECT 
                    * 
                    ,LastEntry = IIF(LEAD(Turno,1,'') OVER(ORDER BY ID) = Turno, 0,1)
                FROM @t
                ) x WHERE x.LastEntry = 1
                ) b
            ON a.Relevo = b.Relevo and a.Turno = b.Turno and a.id <=b.ID
    ) z
    GROUP BY z.Relevo, z.ID, z.Turno, z.TT
    ORDER BY ID

这给出了以下输出

现在您只需在 SSRS 中添加一个父行组,按 GroupByID 分组,然后添加您需要的表达式(例如 =AVG(Fields!TT.Value))。

报告设计将如下所示...

注意:为了清楚起见,我将显示第一列,但您可以删除它。

最终输出如下所示。

【讨论】:

  • 我明天上班检查一下,无论如何感谢您的时间和精力!
猜你喜欢
  • 1970-01-01
  • 2013-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多