我的Tablix有以下列
Country, City, College, totalstudent,passedstudent,failedstudent
我有一个参数“GroupBy”,其值为“country / city / college”。因此,当我选择其中一个参数时,我的tablix应该按该参数分组,并且只有参数列+总数,通过,失败的列
例如。 如果用户选择GroupBy =“City”,则Tablix将显示
City, totalstudent, passedstudent, failedstudent
总计,通过和失败的值是在该城市中分组的总和。
类似的逻辑也应适用于国家和大学。
所以,我能够显示所有列按国家/地区应用分组,然后是城市,然后是大学。 (这是简单的ssrs分组之一)
(我的需要是仅应用基于参数的一个分组,仅显示特定的列)
注意:我有一个原始数据集,它使用来自我的sql数据库的内联sql检索所有这些值。 (数据集1:国家,城市,学院,学生,学生,学生不合格)
答案 0 :(得分:2)
您可以通过表达式对表进行分组。在您的组属性中,您可以编写如下内容:
=Switch(Parameters!GroupBy.Value = "City", Fields!City.Value
, Parameters!GroupBy.Value = "College", Fields!College.Value
, ...)
其他列应该只能使用常规Sum
函数并使用任何分组。
答案 1 :(得分:0)
我尝试了不同的方法(我经历了最后/第三种方法)
为不同的分组条件使用了多个tablix,并使用该参数隐藏/显示报告中的正确tablix 陷阱:由于我有4种不同的分组条件并放入4种不同的Tablix,因此速度非常慢。
使用(http://www.advancedssrs.com/2014/01/how-can-i-use-dynamic-grouping.html)所示的动态分组概念,这很好。但它不适合我的情况,因为当我尝试对SSRS中的列进行排序时,它也相对较慢。 (我需要在所有列中进行排序功能)
创建了一个新参数(groupby),用于模拟制表符的场景。因此,当用户选择其中一个值(国家/城市/学院)时,我使用条件分组语句根据此groupby参数值对我的SQL结果进行分组,并将结果返回给SSRS。
SELECT
CASE WHEN @GroupBy = 'Country' THEN CountryName
WHEN @GroupBy = 'City' THEN CityName
WHEN @GroupBy = 'College' THEN CollegeName
END AS GroupTitle,
SUM(totals) AS totalstudent,
SUM(passes) AS passedstudent,
SUM(fails) AS failedstudent,
FROM #temp
GROUP BY CASE WHEN @GroupBy = 'Country' THEN CountryName
WHEN @GroupBy = 'City' THEN CityName
WHEN @GroupBy = 'College' THEN CollegeName
END
ORDER BY 1
DROP TABLE #temp
答案 2 :(得分:-1)
创建数据集时,不要直接在框中编写查询 - 而是使用表达式。
="SELECT " + Parameters!GroupBy.Value + ", passedstudent, failedstudent
FROM Table GROUP BY " + Parameters!GroupBy.Value
您的“passedstudent
”和“failedstudent
”将是一些汇总,COUNT
或SUM
,取决于您的情况。