【问题标题】:SSRS Expression to Switch LastName, FirstName to FirstName LastName in fieldSSRS 表达式在字段中切换姓氏、名字到名字姓氏
【发布时间】:2021-09-03 06:36:52
【问题描述】:

SQL Server 2016 SSRS 2016 IDE Visual Studio 2017

问题:报告字段包含Doe, John的值

解决方案/输出:使用 SSRS 表达式要求字段输出John Doe

我的表达式的当前示例在我运行预览时给我一个#error:

=Split(Fields!Name.Value,",")(1).ToString() &","& Split(Fields!Name.Value,",")(0).ToString()

我在网上找到了上面的例子,但是抛出了一个错误。 SSRS 高级表达式相对较新。 我没有编辑 T-SQL 查询的选项

【问题讨论】:

  • “但是会抛出错误” 那是什么错误?
  • 如果名字没有逗号,肯定会失败。我想你的名字中没有 ,。
  • @Larnu 预览中返回的错误是:#Error(在表达式所在的字段中)
  • @shahkalpesh 回顾 T-SQL 查询后,您是正确的。此列/字段名称的 SELECT 语句包含在 COALESCE 语句中,如下所示: ,COALESCE(d.Name, 'Not Available') AS Name
  • @shahkalpesh 谢谢。将 SSRS 表达式包装在 IIF 语句中以首先检查“不可用”并且如果错误则拆分字符串是否有意义?

标签: sql-server visual-studio tsql reporting-services ssrs-tablix


【解决方案1】:

这应该可以工作...

=SWITCH(
    split(Fields!Name.Value, ",").length = 1, Fields!Name.Value,
    True, TRIM(split(Fields!Name.Value + ",", ",")(1))
        + " "
        + TRIM(split(Fields!Name.Value + ",", ",")(0))
    )

我在这里所做的是... 对于第一个 SWITCH 表达式对,检查名称是否只有一个元素,如果它确实返回名称(例如“不适用”)。此方法更安全,因为它可以处理不存在逗号的任何内容。

第二部分True 就像ELSE 在这种情况下,我在 Name 字段值的末尾添加了一个逗号,以便评估的字符串始终至少有 1 个逗号(从而防止错误)。我还修剪了结果,以免出现不需要的空格。

我们现在得到了这些结果

【讨论】:

    猜你喜欢
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    相关资源
    最近更新 更多