【问题标题】:sql server 2008 reporting servicessql server 2008 报告服务
【发布时间】:2011-05-27 08:46:14
【问题描述】:

我正在尝试生成矩阵报告。我有一个 SSN 行和一个 3 位代码列。 3 位代码随机插入整个报告的单元格中,每行一个。我想让它们全部显示在一列中。我试过了……

=Iif(IsNothing(Fields!CODE.Value),"The Field Is Null",Fields!CODE.Value)

但这只是显示“该字段为空”。我想注意显示为...

=Iif(IsNothing(Fields!CODE.Value),"",Fields!CODE.Value)

但将空单元格本身排除在外。任何人都知道一个技巧来解决这个问题?

结果应该是这样的......

ssn          code
123456789    123
123456789    123
and so on

我的矩阵结构是这样的...

并且 Exp 现在设置为 =Iif(IsNothing(Fields!ID5.Value),"The Field Is Null",Fields!ID5.Value) 注意:ID5 只是一个快速命名约定。 ID5对应代码。 ID2对应SSN。

【问题讨论】:

  • 您能否添加您的数据在报告中的样子以及您想要显示的内容的更多信息。你似乎说你想显示代码,但又说你不想???
  • 所以 Fields!CODE.Value 可以:有一个值;有一个空字符串值;为空?并且您希望 NULL 和空字符串显示相同?
  • 我实际上希望空单元格消失呵呵!我只是使用 Iif 命令作为起点。我确实想显示代码值,但它们被分散了。每行一个,在大约 20 个单元格之一中。

标签: sql-server-2008 reporting-services expression


【解决方案1】:

基本上,您想将几列压缩为一列,不包括空列?

可能最简单的方法是在查询中进行:

SELECT SSN, IsNull(Code1, '') + IsNull(Code2, '') + IsNull(Code3, '') AS Code
FROM MyTable

或者,在 Reporting Services 中的表达式中执行此操作:

=IIF(IsNothing(Fields!Code1.Value), "", Fields!Code1.Value) + IIF(IsNothing(Fields!Code2.Value), "", Fields!Code2.Value)

等等……

【讨论】:

  • 我可以在构建报告的早期部分中使用它,但我在查询数据集后试图找到一个表达式来执行此操作。
  • 当然,除非您知道如何将其写为可接受的表达式。我没有,但我的水平很低!
  • 只需使用 IIF(IsNothing(... 如答案中所述
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-10
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多