【问题标题】:Searching ALL ROWS in a Group using IIF Expression使用 IIF 表达式搜索组中的所有行
【发布时间】:2017-12-09 03:14:53
【问题描述】:

我正在编写一份报告,该报告显示患者姓名(作为具有细分的组)和与其就诊相关的几个字段。我在报告中创建了一个列来显示特定值是否出现在“LocationID”列中。我使用的表达式是

=IIF(Fields!LocationID.Value="WELL","Y","N")

我认为这很好用,它会在每个名称旁边显示 Y 或 N,让我知道“WELL”是否在他们的“LocationID”中。我检查了几个以确保这将起作用,并发现有一个 LocationID 代码“WHS”,因为如果有 WHS 访问,我有按名称和 LocationID 排序的行,它显示在组的顶部和我的表情只看到了这个顶级项目。该表达式如何以不同的方式编写,以便搜索每个组的整个结果?根据日期范围,患者可能有一次就诊,也可能有十次。我需要检查所有返回的访问。也许有更好的方法。提前致谢。

【问题讨论】:

  • 我会在 SQL 中使用 case 语句根据您需要的逻辑为您的数据集创建一个标志来执行此操作。 - 例如:当 LocationID = 'blah' 然后 'Y' 当 LocationID = 'blah' 然后 'N' 否则 'blah' 以 [newFlag] 结束时的情况
  • 这可以正常工作,只是它不会为每条记录返回 Y 或 N 值。我只需要知道每位患者的就诊是否包含此值。

标签: reporting-services expression iif


【解决方案1】:

我同意 jimmy8ball 的观点,即解决大多数此类问题的最简单方法是将一些逻辑推回 SQL 层。

但是,如果您真的想通过 SSRS 功能执行此操作,那么您可以针对查找集实现子字符串搜索。假设您的数据集中有一个对每个患者都是唯一的患者 ID(我希望您的组不在名称上),那么...

=Iif(InStr(Join(Lookupset(Fields!patientid.Value, Fields!patientid.Value, Fields!LocationsID.Value, "dataset"), ","), "WELL") > 0, "Y", "N")

其中说,“在数据集中搜索与我的患者 ID 相关的所有行,将每个位置连接到逗号分隔的字符串中,在字符串中搜索文本“WELL”,如果找到则返回“Y”。

显然,如果您的数据集中有“WELLY”之类的位置,这些位置将成为误报,您将不得不实施更多嵌套逻辑。尝试将一个值(可能是!)附加到查找集返回字段,以便您可以搜索“WELL!”或其他一些终止符。

【讨论】:

  • 感谢您的回复,我能够使用前面建议的 CASE 语句解决此问题。感谢您的反馈。
猜你喜欢
  • 2010-11-03
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-29
相关资源
最近更新 更多