Reporting services 报表生成器-在列组下的单行中显示值
我想在课程代码下的一行显示学生是否完成了课程。但是我得到了多余的数据。如何避免获取冗余数据Reporting services 报表生成器-在列组下的单行中显示值,reporting-services,Reporting Services,我想在课程代码下的一行显示学生是否完成了课程。但是我得到了多余的数据。如何避免获取冗余数据 谢谢您是否已确定使用数据集中的“已完成”和“正在进行”值 如果改为使用数字,例如1表示已完成,0表示正在进行,则可以采用以下方法 使用此数据集 Name TSW_Num INF_Num PWD_Num A 1 0 0 A 0 1 0 A 0 0
谢谢您是否已确定使用数据集中的“已完成”和“正在进行”值 如果改为使用数字,例如1表示已完成,0表示正在进行,则可以采用以下方法 使用此数据集
Name TSW_Num INF_Num PWD_Num
A 1 0 0
A 0 1 0
A 0 0 1
B 1 0 0
B 0 1 0
将给出以下数据集,类似于问题中显示的
如果要创建一个新表,并将行设置为group on FirstName,并将每个数据单元设置为TSW/INF/PWD_Nums的最大值,例如
=MAX(Fields!TSW_Num.Value)
=SWITCH(
MAX(Fields!TSW_Num.Value) = 1, "Completed",
MAX(Fields!TSW_Num.Value) = 0, "In Progress")
这将导致这样的设计
哪个会变成这样
现在,通过将这些Max(value)表达式中的每一个包装到一个新表达式中,将值转换为文本,例如
=MAX(Fields!TSW_Num.Value)
=SWITCH(
MAX(Fields!TSW_Num.Value) = 1, "Completed",
MAX(Fields!TSW_Num.Value) = 0, "In Progress")
然后,在渲染时,将导致以下结果
希望这是一种可以应用于解决现有问题的方法
您还可以使用IIF语句将原始文本值转换为整数值,以便对其执行最大值计算,但这将变得非常混乱。假设课程进度只能有两种状态已完成且正在进行,如屏幕截图所示,您可以使用此方法: 我已使用此数据集测试我的解决方案: 我使用以下数据排列和行组设置创建了一个tablix: 在
Status
列中,我设置了以下表达式:
=IIF(CountDistinct(Fields!Status.Value,"Student")>1,"Completed","In-Progress")
它将预览:
让我知道这是否可以帮助您。如果行中显示“已完成”,无论顺序如何,是否表示学生已完成课程?或者逻辑是什么?是的。学生完成课程后,在课程代码下应显示为“已完成”,否则为“正在进行”。发行日期应重命名为状态。谢谢Jonnus,我试过了。但问题是,他们只有一个字段,即“状态”,它对学生是否完成学业都有价值。每个课程都没有单独的状态。因此,如果学生学习了3门课程,则状态为3行。有什么解决办法我可以把它们一字排开吗?谢谢,当然必须至少是e字段、学生姓名、课程名称和状态,否则其他数据来自哪里?