Reporting services 通过测试其他列值的值条件,在SSRS报告中填充单元格

Reporting services 通过测试其他列值的值条件,在SSRS报告中填充单元格,reporting-services,Reporting Services,通过测试其他列值的值条件,在SSRS报告中填充单元格 我的数据集中有3列(类别、月份、金额),其值与以下类似: Category Month Amount A Jan 20 A Feb 25 A Mar 10 R Jan 15 R Feb 50 R Mar 55 关于我需要的报告: Jan Feb

通过测试其他列值的值条件,在SSRS报告中填充单元格

我的数据集中有3列(类别、月份、金额),其值与以下类似:

Category   Month   Amount
A          Jan       20
A          Feb       25
A          Mar       10
R          Jan       15
R          Feb       50
R          Mar       55
关于我需要的报告:

    Jan   Feb   Mar
A   20    25    10
R   15    50    55
我已尝试将此表达式放置在每个组行列中,例如,在“Feb”列中,它将是:

=IIF(Fields!Category.Value = "A" and Fields!Month.Value = "Feb", Fields!Amount.Value, 13)
使用不短路的IIF不能正确评估条件。“月”值是一个字符串,它始终显示为条件找到的第一行,在这种情况下,它将显示值20,而不是25。如果我将“月”值更改为int,它将显示false(13); 如何使用IIF或其他方式正确填充手机


非常感谢您在这方面提供的任何帮助。

您不需要做任何类似的事情

用矩阵代替表格就行了

将矩阵添加到报告中,您将看到三个占位符名称(来自内存),例如行、列和数据。将“类别”字段拖到“行”单元格,将“月份”字段拖到“列”单元格,将“金额”字段拖到“数据”单元格。就这样


您将遇到的唯一问题是默认情况下列按字母顺序排列。最好在你的数据集中也有月数,这样你就可以按月数排序了。您可以通过在主报表设计区域下的行/列组面板中右键单击列组名称来设置列顺序。

无需执行类似操作

用矩阵代替表格就行了

将矩阵添加到报告中,您将看到三个占位符名称(来自内存),例如行、列和数据。将“类别”字段拖到“行”单元格,将“月份”字段拖到“列”单元格,将“金额”字段拖到“数据”单元格。就这样


您将遇到的唯一问题是默认情况下列按字母顺序排列。最好在你的数据集中也有月数,这样你就可以按月数排序了。您可以通过右键单击主报表设计区域下的行/列组面板中的列组名称来设置列顺序。

Alan的答案是可行的,但要使您的理论发挥作用,您需要基于类别的行组,然后如果月份匹配,则求和到金额字段中。
=SUM(IIF(fields!month.Value=“Feb”,字段!Amount.Value,0))
。不确定13代表什么。Alan的答案是可行的,但为了让你的理论发挥作用,你需要一个基于类别的行组,然后如果月份匹配,则求和到金额字段
=SUM(IIF(fields!month.Value=“Feb”,fields!Amount.Value,0))
。不确定13是什么。对于月份排序顺序,可以使用:
=Month(CDATE(Fields!Month.Value&“01”&day.Year))
.1)=SUM(IIF(Fields!Month.Value=“Feb”,Fields!Amount.Value,0)),给出错误。(13只是与0的一个区别,只是为了测试)您不需要任何表达式,只需按照我给出的说明1)=SUM(IIF(Fields!Month.Value=“Feb”,Fields!Amount.Value,0)),给出错误。(13仅为0的一个微分,仅用于测试);2) 矩阵工程;3) @Hannover Fist,我需要根据输入的日期参数对列进行排序,首先是上一年的月份,然后增加到输入的日期,为期12个月。例如,作为参数“03/31/2018”,它将首先显示“2017年4月”,然后显示“2017年5月”,最后一列显示“2018年3月”。谢谢如果您的原始问题已经得到回答,您应该发布一个新问题。对于月份排序顺序,您可以使用:
=Month(CDATE(Fields!Month.Value&“01”和Today.Year))
.1)=SUM(IIF(Fields!Month.Value=“Feb”,Fields!Amount.Value,0)),给出错误。(13只是与0的一个区别,只是为了测试)您不需要任何表达式,只需按照我给出的说明1)=SUM(IIF(Fields!Month.Value=“Feb”,Fields!Amount.Value,0)),给出错误。(13仅为0的一个微分,仅用于测试);2) 矩阵工程;3) @Hannover Fist,我需要根据输入的日期参数对列进行排序,首先是上一年的月份,然后增加到输入的日期,为期12个月。例如,作为参数“03/31/2018”,它将首先显示“2017年4月”,然后显示“2017年5月”,最后一列显示“2018年3月”。谢谢如果你原来的问题已经得到回答,你应该发布一个新问题。