ssrs 聚合分组

ssrs grouping on aggregate

我有一份现有的 SSRS 报告,其中显示了项目与目标/子目标之间的一些联系。报告数据如下:

Project      Goal     Subgoal
A             g1         1.1
A             g1         1.2
A             g2         2.1
B             g1         1.1
B             g1         1.2
C             g2         2.2
C             g3         3.1
C             g3         3.2
D             g1         1.1

我需要的是不同数量的项目(第 1 列),但基于它们所连接的目标数量(第 2 列)。 此示例的预期结果将是另一个 table:

Number of Goals          Count of Projects
1                                 2              (Projects B and D have 1 goal)
2                                 2              (Projects A and C have 2 goals)
3                                 0              (none of the projects have 3 goals)

我曾尝试按 CountDistinct(Fields!Goal.Value) 对项目进行分组,但这在 SSRS 中是不允许的。我还尝试计算关联超过 1 个目标的项目:

= CountDistinct(IIF(CountDistinct(Fields!Goal.Value) > 0, Fields!Project.Value,Nothing))

是否可以添加另一个数据集并为查询现有数据集的那个数据集开发查询?不确定是否可以做到。

这是在 T-SQL 中获取所需数据集的简单方法,我确信有一种更有效的方法,但这是我首先想到的,希望这能有所帮助你.

在您提出问题的第一个 table 中使用此查询。

WITH cte_countGoals
AS (SELECT
  Project,
  COUNT(DISTINCT Goal) TotalGoals
FROM Test --Your table name
GROUP BY Project)
SELECT DISTINCT
  a.TotalGoals,
  b.TotalProjects
FROM cte_countGoals a
INNER JOIN (SELECT
  TotalGoals,
  COUNT(TotalGoals) TotalProjects
FROM cte_countGoals
GROUP BY TotalGoals) b
  ON a.TotalGoals = b.TotalGoals

您必须将 Test table 更改为您的 table。

它将 return 一个 table 像这样:

我添加了另一个具有三个不同目标的项目。

转到这个SQL-fiddle自己试试