sql-server - SSRS - 使用特定的行号
问题描述
我有一个 SQL 查询,我在其中获取每个部门和每个月月初和月底的员工数量的行号。为此,我使用工资单结束日期,即每周日期。所以本质上我有 4 个日期显示员工人数。有些月份有 5 个日期,这使得该月的行数为 5 而不是 4。
然后,我需要构建一个 SSRS 报告,以仅显示每个部门每月的第一个员工人数和最后一个员工人数。我有第一个号码,因为我正在使用=IIF(Fields!RowNumber.Value = 1, Fields!EMPCOUNT.Value, 0)
我现在遇到的问题是获取最后一个员工计数,我需要有条件地选择一个计数,如果存在,则行号需要为 5,如果不存在,则需要为 4。我不确定如何让表达式在 SSRS 中工作。示例数据如下。
PRCo EMPCOUNT udDivision PREndDate ROWNUM Type
1 89 Civil 2018-01-06 00:00:00 1 1
1 97 Civil 2018-01-13 00:00:00 2 1
1 97 Civil 2018-01-20 00:00:00 3 1
1 97 Civil 2018-01-27 00:00:00 4 1
1 16 Colorado 2018-01-06 00:00:00 1 1
1 18 Colorado 2018-01-13 00:00:00 2 1
1 14 Colorado 2018-01-20 00:00:00 3 1
1 10 Colorado 2018-01-27 00:00:00 4 1
1 94 Civil 2018-02-03 00:00:00 1 2
1 91 Civil 2018-02-10 00:00:00 2 2
1 92 Civil 2018-02-17 00:00:00 3 2
1 91 Civil 2018-02-24 00:00:00 4 2
1 16 Colorado 2018-02-03 00:00:00 1 2
1 16 Colorado 2018-02-10 00:00:00 2 2
1 18 Colorado 2018-02-17 00:00:00 3 2
1 19 Colorado 2018-02-24 00:00:00 4 2
1 92 Civil 2018-03-03 00:00:00 1 3
1 91 Civil 2018-03-10 00:00:00 2 3
1 88 Civil 2018-03-17 00:00:00 3 3
1 92 Civil 2018-03-24 00:00:00 4 3
1 90 Civil 2018-03-31 00:00:00 5 3
1 19 Colorado 2018-03-03 00:00:00 1 3
1 26 Colorado 2018-03-10 00:00:00 2 3
1 25 Colorado 2018-03-17 00:00:00 3 3
1 27 Colorado 2018-03-24 00:00:00 4 3
1 24 Colorado 2018-03-31 00:00:00 5 3
解决方案
我会在您的查询中执行此操作,而不是尝试让它直接在 SSRS 中工作。可能有比这更简单的方法,但这只是基于您现有的查询。
请注意,这是未经测试的,只是在我的脑海中,所以它可能需要一些编辑才能工作。
SELECT * INTO #t FROM YOUR_EXISTING_QUERY
SELECT DISTINCT
PRCo
, udDivision
, YEAR(PREndDate) AS Yr
, MONTH(PREndDate) AS Mnth
, FIRST_VALUE(EMPCOUNT) OVER(PARTITION BY PRCo, udDivision, YEAR(PREndDate), MONTH(PREndDate) ORDER BY ROWNUM) AS OpeningEMPCOUNT
, LAST_VALUE(EMPCOUNT) OVER(PARTITION BY PRCo, udDivision, YEAR(PREndDate), MONTH(PREndDate) ORDER BY ROWNUM) AS CLosing_EMPCOUNT
FROM #t
你可能需要包括Type
不确定这是做什么的,但你有希望得到这个想法。
FIRST_VALUE 和 LAST_VALUE 函数只需获取定义的分区内的第一个/最后一个值,在您的情况下是 PRCo、udDivision,然后只是工资单结束日期的年和月部分,第一个和最后一个位置由 order 子句确定,在本例行号。
推荐阅读
- php - Gmail 在 WordPress 中显示用于注册、忘记密码或任何其他电子邮件的可疑链接提示
- javascript - 我想将 javascript 中的数据和文件发送到控制器(但如何)(Mvc asp.net)
- javascript - JavaScript 如何访问在它使用的函数之外声明的变量?
- javascript - 仅允许使用正则表达式和字符串替换在 HTML / Javascript 中输入 1-12 和 00-59
- python - 熊猫数据框以一种很好的方式处理“列表”元素
- c# - 如何使用 Nexmo 服务制作语音通话网络应用程序?
- python - 是什么导致这些物体与 pymunk 一起向左飞?
- javascript - 复制 document.write 行为
- authentication - 为什么我无法连接到 ssh 反向隧道?
- javascript - Vue.js - 如何打印自定义尺寸的网页?