MS SQL Server STUFF 函数实战 统计记录行转为列显示

目录

范例运行环境

视图样本设计

数据统计要求

 STUFF函数实现

小结


范例运行环境

操作系统: Windows Server 2019 DataCenter

数据库:Microsoft SQL Server 2016

视图样本设计

假设某一视图 [v_pj_rep1_lname_score] 可查询对某一被评价人的绩效指标的打分情况,并按评价人的职务进行分类, 设计如下:

序号字段名类型说明备注
1projectciduniqueidentifier项目ID
2wxmpciduniqueidentifier被评价人ID
3count_sortidtinyint评价人职级排序号数值越小职务越高
4lnamenvarchar评价人职务
5rsint评价人总数
6scoredecimal评价人总分所有评价人给被评价人打分的总和
7score2decimal评价人平均得分所有评价人给被评价人打分的总和除以总人数的平均分

查询分析器结果数据显示如下图:

 

/****** SSMS 的 SelectTopNRows 命令的脚本  ******/
SELECT  [projectcid],[wxmpcid],[count_sortid],[lname],[rs],[score],[score2]FROM [v_pj_rep1_lname_score] order by projectcid,wxmpcid,count_sortid

如图我们对项目ID、被评价人ID、评价人职务排序号进行排序,可以看到职务越高排位越靠前。

数据统计要求

假设统计视图名 [v_pj_rep1_lname_score_count] 可查询对某一被评价人的所有被评价人统计描述(如人员人数情况、每类人打分情况等),即将视图设计样本的行数据变为列进行显示, 统计表设计如下:

序号字段名类型说明备注
1projectciduniqueidentifier项目ID
2wxmpciduniqueidentifier被评价人ID
3scoredecimal被评价人权重分1总人数的平均分*20%
4score2decimal被评价人权重分2总人数的平均分*20%*30%
5dnamenvarchar统计显示将行数据变为列数据,显示统计详情信息

查询分析器结果数据显示如下图:

如图第一行数据 dname 列返回 “董事长88.21分,总经理100.00分,分协管领导92.23分,其他领导91.79分,部门职工(2人,总分187.65分)93.83分” ,该列会显示各职务打分的人数,总分及平均分情况,从统计结果来看,更加直观。 

 STUFF函数实现

 示例代码如下:

SET ANSI_NULLS ON
GOSET QUOTED_IDENTIFIER ON
GOCREATE view [dbo].[v_pj_rep1_lname_score_count] as select projectcid,wxmpcid,round(sum(score2)*0.2,2) score,round(sum(score2)*0.2*0.3,2) score2,
STUFF(( select ','+b.lname+case when rs>1 then '('+cast(rs as varchar(20))+'人,总分'++REPLACE(cast(round(score,2) as nvarchar(20)),'0000','')+'分'+')' else '' end+REPLACE(cast(round(score2,2) as nvarchar(20)),'0000','')+'分'   
from v_pj_rep1_lname_score b 
where b.projectCid=a.projectcid and b.wxmpCid=a.wxmpCid order by count_sortid for xml path('')
),1,1,'') as dname from v_pj_rep1_lname_score a group by projectcid,wxmpcid
GO

小结

SQL Server 中的 STUFF 函数是将字符串插入到另一个字符串中。 它从第一个字符串的开始位置删除指定长度的字符;然后将第二个字符串插入到第一个字符串的开始位置。

具体语法请参照:https://learn.microsoft.com/zh-cn/sql/t-sql/functions/stuff-transact-sql?view=sql-server-ver16&redirectedfrom=MSDN

至此STUFF的函数使用我们就介绍到这里,具体使用中我们还需要灵活掌握,对结果数据的细节可能还要进一步进行处理,以满足我们的统计要求。并可考虑设计导出到 WORD或EXCEL文件进行下载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/586260.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

校园通勤车可视化系统的设计与实现

1.需求分析: 校园通勤车可视化系统的设计与实现,不用管什么可视化,就是一个小程序就是可以知道校园车的路线,然后往简单了弄就可以。 校园通勤车可视化系统的设计与实现,不用管什么可视化,就是一个小程序…

uniapp开发App(一)登陆流程 判断是否登陆,是,进入首页,否,跳转到登录页

一、登陆流程 文字描述:用户进入App,之后就是判断该App是否有用户登陆过,如果有,直接进入首页,否则跳转到登陆页,登陆成功后,进入首页。 流程图如下: 二、在uniapp项目中代码实现 实…

zabbix图表时间与服务器时间不一致问题

部署完zabbix后,有时候会发现zabbix服务器的时间明明是对的,但是图标的时间不对,通过以下的配置可以快速解决。 登录zabbix-nginx容器 docker exec -u root -it docker-compose-zabbix-zabbix-web-nginx-mysql-1 bash修改php配置文件 vi /e…

2012年认证杯SPSSPRO杯数学建模B题(第一阶段)减缓热岛效应全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 减缓热岛效应 B题 白屋顶计划 原题再现: 第一阶段问题   夏天的城市气温往往格外炎热,这被称为热岛效应。有专家提出,将城市建筑的屋顶漆成白色,减小对阳光的吸收率,可以使城市的气…

GROBID库文献解析

1. 起因 由于某些原因需要在大量的文献中查找相关内容,手动实在是太慢了,所以选择了GROBID库进行文献批量解析 2. GROBID介绍 GROBID是一个机器学习库,用于将PDF等原始文档提取、解析和re-structuring为结构化的XML/TEI编码文档&#xff0…

github 仓库 修改开源协议

记录一下如何修改协议。 然后commit到你想要的主干或者分支就可以了。

Linux 安装部署高性能缓存服务redis

Linux 系统安装Redis 5 注意事项: 下载Redis 文件包,并上传至linux服务上解压 tar -zxvf redis.tar安装: 编译 make PREFIX/usr/local/redis install配置: redis.conf daemonize yes bind 127.0.0.1 192.168.1.221 supervised…

为什么都说“一入Java深似海”?怎么打破这个魔咒

引言 在当今数字化时代,编程已经成为一项至关重要的技能。而在众多编程语言中,Java以其广泛的应用领域和强大的功能特性,吸引了无数开发者的目光。无论是Web开发、移动应用还是大数据处理,Java都发挥着举足轻重的作用。然而&…

【核心复现】同时考虑考虑孤岛与重构的配电网故障恢复运行策略

目录 主要内容 内容详情 1.问题引出 2.可控负荷 3.网络拓扑约束 4.算法流程 结果一览 1.原文结果 2.程序运行结果 下载链接 主要内容 该模型复现文章《同时考虑考虑孤岛与重构的配电网故障恢复运行策略》,以IEEE33配电网为分析对象,…

2024春算法训练3——数组与字符串

一、题解 1、A-[NOIP2013]记数问题_2024春算法训练3——数组与字符串 (nowcoder.com) 直接暴力用一个哈希表存每个数出现的次数&#xff0c;最坏的时间时间复杂度为7*10^7&#xff08;实际上比这个数要小&#xff09;&#xff1b;代码如下&#xff1a; #include<iostream…

记忆力考验游戏-第15届蓝桥第5次STEMA测评Scratch真题精选

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第178讲。 如果想持续关注Scratch蓝桥真题解读&#xff0c;可以点击《Scratch蓝桥杯历年真题》并订阅合集&#xff0c;…

蓝桥杯第九届c++大学B组详细

目录 1.第几天 2.明码 3.乘积尾零 4.测试次数 5.递增三元组 6.日志统计 7.乘积最大 1.第几天 题目解析&#xff1a;这题是不是和以前有点印象&#xff0c;就是日期类但是是日期的减法。 #include <iostream> using namespace std;class Date { public: Date(in…