我正在编写 SSRS 报告。其中一个字段通常包含数组形式的数据:
当报表运行时,企业希望数组中包含的每个项目都在线。像这样的东西:
当我不知道数组可以包含多少项时,如何实现此目的?只能是1件,还是20件?这可能吗?
提前致谢!
我考虑过使用计算字段的 Split 函数,但由于不知道给定记录的数组中可能有多少项,我被难住了。
如果您只是想在新行上显示 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
生成一行。然后我修剪了该值以消除多余的空格等。
此查询返回以下内容,然后可以在您的报告中轻松使用。