Dynamic SSRS矩阵与用户参数动态分组
我使用SQL Server 2014 Reporting Services以以下方式显示包含动态数据的矩阵:Dynamic SSRS矩阵与用户参数动态分组,dynamic,reporting-services,grouping,Dynamic,Reporting Services,Grouping,我使用SQL Server 2014 Reporting Services以以下方式显示包含动态数据的矩阵: 报表的数据位于数据库视图中,其中一条记录具有>20个id/名称属性(例如CityID、CityName、CountryID、CountryName、SalesmanID、SalesmanName、ProductID、ProductName、Index1ID、Index1Name、Index2ID、Index2Name…)和2个十进制值(值1、值2) SSRS报告只有一个矩阵(tablix
=Switch(
Parameters!XAxisDimensionParameter.Value=1, Fields!CityId.Value,
Parameters!XAxisDimensionParameter.Value=2, Fields!CodeId.Value,
Parameters!XAxisDimensionParameter.Value=3, Fields!NameId.Value,
Parameters!XAxisDimensionParameter.Value=4, ...,
..., ...,
)
我现在想做的是向行添加分组功能。
用户将在“分组依据”参数中输入例如“国家、地区、城市”,tablix将按CountryID、RegionID和CityID对产品数据进行分组。请注意,用户可以指定任意数量的分组。“无分组”也是一个有效选项
我可以在设计时静态地这样做,但这不是满足用户需求的解决方案
看起来不可能在运行时动态添加分组
真的吗?我会在SQL中进行动态分组。您可以将a
CASE
表达式与参数一起使用。然后在报告中,您将按[dynamic\u group]
列进行分组
SQL示例
查询结果
我看不出这个解决方案有多合适。你能再解释一下吗?注意多级分组矩阵,有N组。你能发布参数的数据集吗!XAxisDimensionParameter.Value?如果您发布示例数据集,我可能能够提供一个递归CTE,该CTE无需使用CASE表达式即可生成结果。您是否仍然存在动态分组问题?
;WITH
example_data
AS
(
SELECT tbl.* FROM (VALUES
( 'City1', 'Code1', 'Name1')
, ( 'City2', 'Code2', 'Name2')
, ( 'City3', 'Code3', 'Name3')
, ( 'City4', 'Code4', 'Name4')
, ( 'City5', 'Code5', 'Name5')
, ( 'City6', 'Code6', 'Name6')
) tbl ([CityId], [CodeId], [NameId])
)
SELECT
[dynamic_group] =
CASE
WHEN @XAxisDimensionParameter IN(1) THEN [CityId]
WHEN @XAxisDimensionParameter IN(2) THEN [CodeId]
WHEN @XAxisDimensionParameter IN(3) THEN [NameId]
WHEN @XAxisDimensionParameter IN(1,2,3) THEN [CityId] + ':' + [CodeId] + ':' + [NameId]
ELSE NULL
END
FROM
example_data