我创建了一个视图,该视图显示了有孩子的家庭被我们机构的多个计划录取。我们只需要看看两个不同的程序中有两个孩子却是同一个家庭。将此视图引入Reporting Services时,如何仅在每个组有两行时显示并隐藏其余行?例如,如果史密斯一家有两个孩子-一个在“抢先”中,另一个在“提前抢先”中-如何显示这些行,但隐藏其他仅列出每个家庭一个孩子的行?
当前,我在SQL代码中有两个CASE语句。将创建一列,该列针对每次出现的Head Start程序项显示1,否则显示0。另一位用户则执行相同的操作,但是每次出现“抢先启动”程序项时。
我尝试了一条不同的路线,将这两个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的“行可见性”设置中实现一行代码?目前,我不确定如何完成此操作。