Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 查询列返回多个读数,并且在ssrs中需要是多个单元格_Sql Server 2005_Reporting Services - Fatal编程技术网

Sql server 2005 查询列返回多个读数,并且在ssrs中需要是多个单元格

Sql server 2005 查询列返回多个读数,并且在ssrs中需要是多个单元格,sql-server-2005,reporting-services,Sql Server 2005,Reporting Services,我有一个查询单元格,返回多个读数,最多8个 |_____readings_____| |1;2;3;..., 8 | |_____读物_____| |1;2.3.8 | 在我的SSRS报告中,我需要每个读数都在一个单独的列中,例如 | a | b | c | ...| | 1 | 2 | 3 | ...| |a | b | c || | 1 | 2 | 3 | ...| 我使用的是2005版的ssrs和sql server 有人能帮忙吗?亲切问候报告级别 您可以使用Split

我有一个查询单元格,返回多个读数,最多8个

|_____readings_____| |1;2;3;..., 8 | |_____读物_____| |1;2.3.8 | 在我的SSRS报告中,我需要每个读数都在一个单独的列中,例如

| a | b | c | ...| | 1 | 2 | 3 | ...| |a | b | c || | 1 | 2 | 3 | ...| 我使用的是2005版的ssrs和sql server
有人能帮忙吗?亲切问候

报告级别

您可以使用
Split
函数获取分隔字符串并返回数组;基于此,您可以指定要从0-7获得八列的元素

在表达式中,您可以这样做:

=拆分(字段!readings.Value,“;”)(0)
(第一个元素)或

=Split(fields!readings.Value,“;”)(7)
(第8个元素)

问题是
读数
字段中的元素少于8个;您将收到错误报告-将表达式包装在
IIf
中是不够的,因为这不会在SSR中短路,任何问题字符串都将出错

要处理这些问题,可以将逻辑移到报表中嵌入的自定义代码:

Function ElementByNumber(fieldValue As String, elementNumber As Integer) As String

  If Split(fieldValue, ";").Length < elementNumber

    ElementByNumber = Nothing

  Else

    ElementByNumber = Split(fieldValue, ";")(elementNumber - 1)

  End If

End Function
根据需要为所需的每列重复此操作

数据库级别

其他非SSRS特定的解决方法是,如果可能,在数据库级别处理此问题,并仅使用未插入的数据作为报告中矩阵的基础

Erland Sommarskog下有一系列文章,介绍了在SQL Server中拆分字符串的任意数量的方法;所以这个问题还有很多其他的选择


显然,如果您处理的是固定的数据源/数据集,这可能不是一个选项。

只是确认一下,每个
读数
字段中最多是八个值还是正好八个值?另外,在您的最终报告中,如果所有不同的
读数
值中最多只有七个值,报告应该只显示七列吗?或者在每种情况下显示八列可以吗?它最多有8个值,在每种情况下包含所有8个值也可以。非常感谢。我以为在SSRS级别没有办法。这太棒了。
=Code.ElementByNumber(fields!readings.Value, 8)