首页 > 解决方案 > 如何在两个工作日期之间获得以下 SRSS IFF 表达式

问题描述

我正在努力使以下表达式起作用;有人可以建议吗?表达式将运行,但所有字段都填充有 #Error 消息。

=iif(Fields!From.Value>="01/09/2021" and Fields!From.Value <= "31/08/2022", "Sept 2021",
 iif(Fields!From.Value>= "01/09/2020" and Fields!From.Value <= "31/08/2021", "Sept 2020", 
 iif(Fields!From.Value >= "01/09/2019" and Fields!From.Value <= "31/08/2020", "Sept 2019", 
 iif(Fields!From.Value >= "01/09/2018" and Fields!From.Value <= "31/08/2019", "Sept 2018",
 iif(Fields!From.Value >= "01/09/2017" and Fields!From.Value <= "31/08/2018","Sept 2017",
 iif(Fields!From.Value >= "01/09/2016" and Fields!From.Value <="31/08/2017","Sept 2016","0"))))))

任何帮助都感激不尽!

标签: reporting-servicesreportbuilder3.0reportbuilderreport-builder2.0

解决方案


假设From实际上是一个日期而不是字符串,那么如果这样你可以简化。

="Sept " &
    (YEAR(Fields!From.Value) 
        - IIF(Month(Fields!From.Value) >= 9, 0, 1)
        )

这只是检查月份是否 >=9,然后在字段的年份部分中减去零或 1 From。然后就贴"Sept "在它前面。这也意味着您不需要长的 IIF 或 SWITCH 语句,它适用于任何一年。

关于你原来的表情。如果您需要使用字符串文字来表示日期,那么最好使用明确的格式。"01/09/2021"在英国可以解释为“2021 年 9 月 1 日”,在美国可以解释为“2021 年 1 月 9 日”。如果您使用"2021-09-01"它,则应始终正确解释。


推荐阅读