我有一份现有的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列)。 此示例的预期结果将是另一个表:
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))
是否可以添加另一个数据集并为查询现有数据集的数据集开发查询?不确定是否可以这样做。
答案 0 :(得分:2)
这是在T-SQL中获取所需数据集的天真方式,我确信有一种更有效的方法,但这是我首先想到的,希望这可以帮到你。
将此查询用于您提问的第一个表格。
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
表格更改为您的表格名称。
它会返回一个这样的表:
我添加了另一个有三个不同目标的项目。
转到此SQL-fiddle自行试用