如何将字段中包含的数据拆分为多行?

问题描述 投票:0回答:1

我正在编写 SSRS 报告。其中一个字段通常包含数组形式的数据:

Table 1

当报表运行时,企业希望数组中包含的每个项目都在线。像这样的东西:

Table 2

当我不知道数组可以包含多少项时,如何实现此目的?只能是1件,还是20件?这可能吗?

提前致谢!

我考虑过使用计算字段的 Split 函数,但由于不知道给定记录的数组中可能有多少项,我被难住了。

reporting-services
1个回答
0
投票

如果您只是想在新行上显示 FieldC 中的每个条目,那么您可以使用 SPLIT() 和 JOIN() 轻松完成此操作。

=JOIN(SPLIT(Fields!FieldC.Value, "; "), vbcrlf)

但是,如果您确实想为 FieldC 中的每个条目“生成”一行,那么您可能必须在数据集查询中执行此操作。虽然很简单。

这里有一些示例数据

DECLARE @t TABLE (FieldA varchar(10), FieldB varchar(10), FieldC varchar(100))
INSERT INTO @t VALUES 
    ('Data1', 'Data2', 'Car; Truck; Van'),
    ('Data3', 'Data4', 'Red; Green; Blue; Yellow')

SELECT 
    * 
    FROM @t t 
    CROSS APPLY (SELECT LTRIM(RTRIM(value)) as splitCol FROM string_split(FieldC, ';')) x 

返回数据的实际查询只是正常获取每一行,然后当我们将 FieldC 传递给它时,使用 CROSS APPLY 为从

value
返回的每个
string_split
生成一行。然后我修剪了该值以消除多余的空格等。

此查询返回以下内容,然后可以在您的报告中轻松使用。

© www.soinside.com 2019 - 2024. All rights reserved.