需求场景
大部分查询需求只需要向下纵向的一维扩展,当查询时需要有纵向和横向不确定纬度的二维扩展需求,普通的扩展表就无法处理了,需要利用交叉表来处理,如下截图:
这是一份模拟查询数据,不是真实的业务实例,只是为了演示查询表公式的设计,
查询需求如下:
- 按年月纬度和姓名进行人员工作量得分查询,姓名为空则查询全部人员;
- 每个人每天的工位号不同,工作量也不同,基础分规则为主任100、科员80,因此需要扩展为3列/天;
- 合计=工作量+基础分
- 最后给合计分计算排名,但不需要顺序展示
实现步骤:
- 定义交叉表
- 设置字段合并
- 设计提取公式
交叉表定义
日期字段设置为同值合并
提取公式设计
公式列表
- 给查询字段年月赋一个初始值
- 提取上标题
- 提取左标题
- 查询演示的工作量是随机生成的模拟数据
- 提取工位和基础分
- 计算(工作量+基础分)这个公式需要手动行列匹配
- 排名
详情如下
1、给查询字段年月赋一个初始值
2、提取上标题
row_number()over(order by 本报表.[工作量统计_扩展表].[合计] desc)
3、提取左标题
4、查询演示的工作量是随机生成的模拟数据
CAST(CRYPT_ GEN_ RANDOM(2)%100 AS varchar)
5、提取工位和基础分
case
when 本报表.[工作量统计_扩展表].[分项]= '工位' then LEFT(NEWID(),4)
when 本报表.[工作量统计_扩展表].[分项]= '基础分' then
case
when 本报表.[工作量统计_扩展表].[岗位] then '100'
else '80'
end
6、计算(工作量+基础分)
这个公式需要手动行列匹配
7、排名
查询效果动图
以上就是本次的分享内容,如果您对我们的《复杂交叉表查询示例》感兴趣,或希望了解更多其他应用技巧,欢迎留言告诉我们。
原文链接
分享 | 复杂交叉表查询示例
https://mp.weixin.qq.com/s/FIs5xzfJx93lbI4wR3uloA
相关文章
- 交叉表教程