sql-server - 除非SSRS中每组有2行,否则如何隐藏行?
问题描述
我创建了一个视图,显示有孩子的家庭参加了我们机构的多个项目。我们只需要看看两个孩子在两个不同的节目但同一个家庭的情况。将此视图引入 Reporting Services 时,如何仅在每个组有两行时显示并隐藏其余行?例如,如果史密斯一家有两个孩子——一个在启蒙教育中,另一个在早期启蒙教育中——我如何显示这些行但隐藏每个家庭只列出一个孩子的其他行?
目前,我在 SQL 代码中有两个 CASE 语句。一个人创建一列,每次出现的启蒙计划术语都显示 1,否则显示 0。另一个做同样的事情,但每次出现 Early Head Start 计划术语。
我尝试了一条不同的路线,并将这两个 CASE 语句压缩为一列,按家族名称对它们进行分组,并计算每个家族的 1 个。但是,这并没有为我们提供所需的详细数据;我们需要显示每个孩子的姓名和项目术语。
我一直在试验 SSRS 的“行可见性”部分中的 CountRows 表达式和报告 tablix 中的 IIF 语句,但我都无法工作。
SQL 代码:
SELECT CP_Data.dbo.Family.FamilyName,
CP_Data.dbo.vParticipant.PersonName,
CP_Data.dbo.vParticipant.ChildPlusID,
CP_Data.dbo.vParticipant.EnrlStatus,
CP_Data.dbo.vParticipant.ProgramTermAbbreviation,
CASE WHEN ProgramTermAbbreviation = 'HS20' THEN 1 ELSE 0 END AS HSIdentifier,
CASE WHEN ProgramTermAbbreviation = 'EH20' THEN 1 ELSE 0 END AS EHSIdentifier,
CP_Data.dbo.vParticipant.EnrollmentDate
FROM CP_Data.dbo.vParticipant
LEFT OUTER JOIN CP_Data.dbo.FamilyMembership ON CP_Data.dbo.vParticipant.ParticipantPersonID = CP_Data.dbo.FamilyMembership.PersonID
RIGHT OUTER JOIN CP_Data.dbo.Family ON CP_Data.dbo.FamilyMembership.FamilyID = CP_Data.dbo.Family.FamilyID
WHERE (CP_Data.dbo.vParticipant.ProgramTermAbbreviation = 'HS20'
OR CP_Data.dbo.vParticipant.ProgramTermAbbreviation = 'EH20')
AND (CP_Data.dbo.vParticipant.EnrlStatus = 'Enrolled'
OR CP_Data.dbo.vParticipant.EnrlStatus LIKE 'Drop%');
最后,我希望报告只列出在这两个项目中都有孩子的家庭,并隐藏其余的家庭。我应该重新执行 CASE 语句还是在 SSRS 的行可见性设置中实现一行代码?目前,我不确定如何做到这一点。
解决方案
就个人而言,我会使用RowVisibility
来隐藏不符合您条件的行。首先,我建议可能使用该OVER
子句来获取一个字段,该字段将标识FamilyName
在每个程序中具有一个(或多个)孩子的那些组。
SELECT...
SUM(CASE WHEN ProgramTermAbbreviation = 'HS20' OR ProgramTermAbbreviation = 'EH20' THEN 1 ELSE 0 END)
OVER(PARTITION BY FamilyName) AS HSIdentifier
从那里,您可以RowVisibility
在值为 1 或更少时将其设置为隐藏。在我看来,最简单的方法是使用如下表达式:
=IIF(Fields!HSIdentifier.Value > 1, false, true)
如果我了解您的数据的工作方式,这应该会为您提供您希望的确切结果,但如果我误解了某些内容,请告诉我。
推荐阅读
- php - 转换 json 中的特殊字符串答案或获取数据 PHP 的访问权限
- windows - 使用 WFP 用户模式 API 接收进出流量统计信息
- reactjs - 反应选择示例不显示下拉菜单
- c# - 签署 JSON 有效负载
- javascript - Jquery将数组推送到数组项子项不起作用
- reactjs - React Js 自动完成多选示例
- node.js - 在 Heroku MongoDB 连接上部署应用程序时出错
- doctrine-orm - Symfony 迁移 - 忘记为某些字段添加可空值
- reactjs - 使用 Recoil 为数千个项目创建和读取状态
- javascript - JavaScript:将嵌套对象数组中的数字相加