首页 > 解决方案 > 报告生成器 (SSRS) SWITCH 语句空白值

问题描述

对于我正在构建的报告,有些字段依赖于用户选择将其他人添加到他们的策略中(在数据集中命名为dependent1、dependent2 等)。

我们需要确定这些受抚养人是成人还是儿童以进行报告。这将通过我理解的 DOB 和 DateDiff 完成

目前,我可以让报告显示ADULT或者CHILD是否存在数据,但是如果没有任何数据我无法返回""值,它只是默认为ADULT.

我在用着:

=Switch(DateDiff("yyyy", Fields!Dependant1DoB.Value, Fields!Policy_Start_Date.Value) < 18, "CHILD", 
        DateDiff("yyyy", Fields!Dependant1DoB.Value, Fields!Policy_Start_Date.Value) >= 18, "ADULT", 
        DateDiff("yyyy", Fields!Dependant1DoB.Value, Fields!Policy_Start_Date.Value), "")

我还创建了另一列,它使用 Fields!Dependant1DoB.Value 和 Fields!Policy_Start_Date.Value 之间的 DateDiff 来显示年数。这有效并返回一个数字。但是由于某些未知原因,没有数据,它仍然返回“2019”,这可能会影响它?我已经尝试在 Switch 语句 ( DateDiff("yyyy",Fields!Dependant1DoB.Value,Fields!Policy_Start_Date.Value)=2019, "")) 中包含它,但这仍然不起作用。

有人请帮忙,因为这让我发疯!

标签: sqlreporting-servicesswitch-statementdatediff

解决方案


您需要先检查什么,然后应用 switch 功能,示例如下:

=IIF(IsNothing(Fields!Dependent1DoB.Value),"", Switch(DateDiff("yyyy",Fields!Dependent1DoB.Value,Fields!Policy_Start_Date.Value)<18, "CHILD", DateDiff("yyyy",Fields! Dependent1DoB.Value,Fields!Policy_Start_Date.Value)>=18, "ADULT" ) )


推荐阅读