visual-studio - 使用计算行创建 SSRS 报告
问题描述
但我需要在每次“Turno”更改时添加一个带有计算字段的新行,并在表格末尾添加另一行,如下所示:
这是我第一次创建这样的报告,所以任何帮助将不胜感激,谢谢。
编辑。建议的答案:将小计添加到 SSRS 报告 tablix 对我不起作用。此答案将所有“NOCHE”分组,然后将所有“MAÑANA”分组,然后将所有“TARDE”分组,但当“Turno”在下一行发生变化时,我需要分组,而不是所有具有相同 Turno 的记录。提前谢谢,对不起我的英语。
解决方案
可能有一种方法可以直接在 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)
)。
报告设计将如下所示...
注意:为了清楚起见,我显示了第一列,但您可以删除它。
最终输出如下所示。
推荐阅读
- javascript - 从 axios 获取所有端点
- datetime - 写时间的最安全方法(日期时间)
- android - android如何在通过动画滚动时更改工具栏颜色
- tensorflow - 重塑 Keras 中的张量列表
- pandas - pandas to gbq 声称架构不匹配,而架构完全相同。在 github 上,声称所有问题都已在 2017 年解决
- javascript - 在脚本 src 中使用本地存储值
- python - 通过 requests.get() 下载 csv 数据检索我的 php 文本
- django - 如何从表单传递值到视图
- android - 当本地存储中不存在文件时,毕加索显示错误的图像
- c# - 根据类型将 JSON 文件中的每一行更改为常量