IIf 语句在报表生成器中组合 2 个日期字段
IIf statement to combine 2 date fields in report builder
我的数据集中有两个日期字段。它们被标记为 OperativeA 和 OperativeB,并根据工作分配给谁来填充。
用户将只能向其中一个字段添加日期,因此只有 1 个日期字段将被使用,这意味着当我 运行 报告时,未使用的日期字段显示为空白。
我正在尝试编写一个计算字段,以便如果两个日期字段都为空,则它显示为 "unassigned",否则显示它已分配给的操作员。 OperativeA 或 OperativeB.
到目前为止,我已经创建了 2 个计算字段:
=IIF(IsNothing(Fields!OperativeA.Value), "Unassigned", Fields!OperativeA.Value)
=IIF(IsNothing(Fields!OperativeB.Value), "Unassigned", Fields!OperativeB.Value)
这些工作,但我还没有真正取得任何成就,因为我还有 2 个领域!
我正在努力将 2 个组合起来,这样我只有 1 个字段显示 "unassigned" 或其中一个特工。
有没有人有任何建议可以帮助我实现 1 字段?
非常感谢
就我个人而言,如果可能的话,我会在服务器上执行此操作(我假设这里是 SQL 服务器)。它会像
一样简单
SELECT
COALESCE(OperativeA, OperativeB, 'Unassigned') AS myCalcField
, myOtherFields
FROM myTable
如果您真的必须在 SSRS 中执行此操作,那么您将需要
=SWITCH (
Len(Fields!OperativeA.Value) >0 , Fields!OperativeA.Value,
Len(Fields!OperativeB.Value) >0 , Fields!OperativeB.Value,
True, "Unassigned"
)
您可以使用嵌套的 IIF 语句来获得相同的结果,但 SWITCH 通常更清晰易读。 SWITCH 语句在 return 为真的第一个表达式处停止。所以我们检查 A 是否包含任何东西,如果是,我们 return A,如果不检查 B,最后如果所有其他方法都失败,最终表达式 True
显然会 return true 所以最后一个值是returned(最后 expression/value 对充当 'else')。
我的数据集中有两个日期字段。它们被标记为 OperativeA 和 OperativeB,并根据工作分配给谁来填充。 用户将只能向其中一个字段添加日期,因此只有 1 个日期字段将被使用,这意味着当我 运行 报告时,未使用的日期字段显示为空白。
我正在尝试编写一个计算字段,以便如果两个日期字段都为空,则它显示为 "unassigned",否则显示它已分配给的操作员。 OperativeA 或 OperativeB.
到目前为止,我已经创建了 2 个计算字段:
=IIF(IsNothing(Fields!OperativeA.Value), "Unassigned", Fields!OperativeA.Value)
=IIF(IsNothing(Fields!OperativeB.Value), "Unassigned", Fields!OperativeB.Value)
这些工作,但我还没有真正取得任何成就,因为我还有 2 个领域!
我正在努力将 2 个组合起来,这样我只有 1 个字段显示 "unassigned" 或其中一个特工。
有没有人有任何建议可以帮助我实现 1 字段?
非常感谢
就我个人而言,如果可能的话,我会在服务器上执行此操作(我假设这里是 SQL 服务器)。它会像
一样简单SELECT
COALESCE(OperativeA, OperativeB, 'Unassigned') AS myCalcField
, myOtherFields
FROM myTable
如果您真的必须在 SSRS 中执行此操作,那么您将需要
=SWITCH (
Len(Fields!OperativeA.Value) >0 , Fields!OperativeA.Value,
Len(Fields!OperativeB.Value) >0 , Fields!OperativeB.Value,
True, "Unassigned"
)
您可以使用嵌套的 IIF 语句来获得相同的结果,但 SWITCH 通常更清晰易读。 SWITCH 语句在 return 为真的第一个表达式处停止。所以我们检查 A 是否包含任何东西,如果是,我们 return A,如果不检查 B,最后如果所有其他方法都失败,最终表达式 True
显然会 return true 所以最后一个值是returned(最后 expression/value 对充当 'else')。