计算拥有 1 或 2 或 3 条记录的人员的不同员工参考号

问题描述 投票:0回答:1

我正在尝试构建一个柱形图,用于计算拥有 1、2 或 3 条记录的人员的不同员工参考号。

作为示例,包含的表格在 3 列旁边显示 3 个不同的员工参考号,每个学年一个,显示他们在这 3 年中的任何一年中是否有记录(1 表示是)。

table

我希望能够计算拥有 1 条记录、2 条记录或 3 条记录的员工人数。

我试过了

=CountDistinct(IIF(Sum(Fields!NoofOTrecordsin2122.Value+Fields!NoOTrecordsin2223.Value+Fields!NoofOTrecordsin2324.Value)=1,Fields!StaffRef.Value,Nothing))

我原本希望获得具有 1 条记录的多个不同员工参考编号,但得到了“图表‘Chart6’的 Y 表达式具有对聚合函数无效的范围参数。范围参数必须是设置为字符串常量,该常量等于包含组的名称、包含数据区域的名称或数据集的名称”

员工参考 2122年加班次数 2223年加班次数 2324年加班次数
15088 1 0 0
15088 0 1 0
15088 0 0 1
15157 0 1 0
15157 0 0 1
20622 0 0 1
20454 0 1 0
20454 0 0 1
20465 1 0 0
20465 0 1 0
20465 0 0 1

当我对这些数据进行透视时,它向我表明 2 个员工参考号(15088 和 20465)有 3 条记录(2122,2223,2324) 2 个员工参考号(15157 和 20454)有 2 条记录(2223,2324) 1 员工参考 (20622) 有 1 条记录 (2324)

我希望能够统计有 3 条记录、2 条记录和 1 条记录的职员裁判的数量。

reporting-services count
1个回答
0
投票

这在数据集查询中更容易做到,所以这就是这里采用的方法。

首先获取您的示例数据(这是一种作为数据库小提琴添加到帖子中很有用的东西,以便其他人可以将其复制进去并准备好数据来使用)

DECLARE @t TABLE (StaffRef int, OT2122 int, OT2223 int, OT2324 int)

INSERT INTO @t VALUES 
(15088, 1, 0, 0),
(15088, 0, 1, 0),
(15088, 0, 0, 1),
(15157, 0, 1, 0),
(15157, 0, 0, 1),
(20622, 0, 0, 1),
(20454, 0, 1, 0),
(20454, 0, 0, 1),
(20465, 1, 0, 0),
(20465, 0, 1, 0),
(20465, 0, 0, 1)

SELECT StaffRecCount, StaffCount  = COUNT(*)
    FROM 
        (
        SELECT DISTINCT
            StaffRef
            , StaffRecCount = SUM(OT2122+OT2223+OT2324) OVER (PARTITION BY StaffRef) FROM @t
        ) rc
GROUP BY StaffRecCount

最后的查询获取样本数据,对每个

StaffRef
的 3 列求和,然后外部查询获取这些结果并按内部查询中的计数对它们进行分组。

这很痛苦,因为它很难编码到列中,但这就是我必须继续的。我怀疑数据在某个地方以更标准化的形式保存,如果是这样,事情会让事情变得更容易......无论如何......

最终结果是一个非常简单的数据集,如下所示。

员工记录计数 员工人数
1 1
2 2
3 2

现在我们只需添加一个简单的柱形图并进行如下设置...还将类别组的排序顺序设置为相反,因此结果为 3,2,1

最终输出看起来像这样......(需要一些整理,但足够接近)

© www.soinside.com 2019 - 2024. All rights reserved.