繁体   English   中英

如何在SSRS表达式中组合Multipe AND和OR?

[英]How to Combine Multipe AND and ORs in SSRS Expression?

我已经尝试解决这个问题了一段时间,但是我无法忍受它。 我在这里复习了许多问题,但是没有人遇到我遇到的确切问题。 因此,我希望这里有人可以提供帮助。

我有一个查询,可以在SSMS中完美运行。 但是,此查询将被提供给报告。 该报告具有2个参数,开始日期和结束日期,由用户在运行时提供。 我需要针对这些日期进行一系列检查,并且仅回退满足多个条件之一的记录,因此可以进行“或”操作。

我想在“过滤器”中执行此操作,并且只为每个条件添加一个过滤器。 但是,过滤器之间的默认行为是AND,我需要在我的复杂过滤器之间执行OR。 因此,我在网上找到了一个示例,然后开始打字。

单独站立时,OR两侧的表达式都起作用。 但是,一旦将它们与OR运算符组合在一起,我将只返回与OR的正面(在OR之前)匹配的记录,但是不包括与背面的匹配(在OR之后)的记录。

这是Dynamics CRM 2015的报告,我正在使用Visual Studio 2010。

这是我放入报告中的筛选器的屏幕截图: 筛选器的屏幕截图

这是此过滤器中的表达式:

=((Fields!xyz_StartDateNewStudent.Value <> Nothing) AND (Fields!xyz_StartDateNewStudent.Value >= Parameters!StartDate.Value) AND (Fields!xyz_StartDateNewStudent.Value <= Parameters!EndDate.Value)) Or ((Fields!xyz_StartDateCarryoverStudent.Value <> Nothing)  AND  (Fields!xyz_StartDateCarryoverStudent.Value <= Parameters!StartDate.Value) AND (Fields!xyz_GraduationDate.Value <> Nothing) AND (Fields!xyz_GraduationDate.Value <= Parameters!EndDate.Value))

谁能阐明为什么我的OR在方程式的两端都不起作用?

不幸的是,SSRS表达式不喜欢布尔逻辑。 您将需要使用IIF:

=IIF((Fields!xyz_StartDateNewStudent.Value <> Nothing) 
  AND (Fields!xyz_StartDateNewStudent.Value >= Parameters!StartDate.Value) 
  AND (Fields!xyz_StartDateNewStudent.Value <= Parameters!EndDate.Value)) 
Or ((Fields!xyz_StartDateCarryoverStudent.Value <> Nothing)  
  AND  (Fields!xyz_StartDateCarryoverStudent.Value <= Parameters!StartDate.Value) 
  AND (Fields!xyz_GraduationDate.Value <> Nothing) 
  AND (Fields!xyz_GraduationDate.Value <= Parameters!EndDate.Value))
, True, False)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM