经典行转列例子

简介: /********************************************************************************课程表:Course******************************...

/*******************************************************************************
*课程表:Course
********************************************************************************/
CREATE TABLE #Course ( CourseName VARCHAR(10) );
INSERT  INTO #Course
        ( CourseName )
VALUES  ( '语文' ),
        ( '数学' ),
        ( '英语' )


SELECT  *
FROM    #Course

/*******************************************************************************
*学生成绩表:Score
********************************************************************************/
CREATE TABLE #Score
    (
      StudentName VARCHAR(10) ,
      CourseName VARCHAR(10) ,
      Score INT
    );
INSERT  INTO #Score
        ( StudentName, CourseName, Score )
VALUES  ( '小红', '语文', 76 ),
        ( '小红', '数学', 85 ),
        ( '小红', '英语', 55 ),
        ( '小李', '语文', 90 ),
        ( '小李', '英语', 74 ),
        ( '小林', '语文', 87 ),
        ( '小林', '数学', 90 )


SELECT  *
FROM    #Score

/*******************************************************************************
*组织所有的课程
********************************************************************************/
DECLARE @CourseName VARCHAR(200) = ''
DECLARE @SelectSQL NVARCHAR(2000)
DECLARE @sql NVARCHAR(2000)

SELECT  @CourseName = @CourseName + '[' + CourseName + '],'
FROM    #Course


SET @CourseName = LEFT(@CourseName, LEN(@CourseName) - 1)


/*******************************************************************************
*行转列操作
********************************************************************************/
SET @SelectSQL = 'SELECT pvt.*
 FROM
 (
   SELECT StudentName, CourseName, Score FROM #Score
 ) p
 PIVOT( SUM(Score) For CourseName in ({0})) AS pvt'


SET @SelectSQL = REPLACE(@SelectSQL, '{0}', @CourseName)                
EXEC sp_executesql @SelectSQL

/*总分*/
SET @sql = ' SELECT m.* , n.total
FROM
(
    SELECT * FROM
        (
            SELECT * FROM #Score
        ) p
        PIVOT (SUM(Score) FOR CourseName in ('+ @CourseName + ')) b
) m ,
(
SELECT StudentName,sum(Score) AS total from #Score
GROUP BY StudentName
)n
WHERE m.StudentName= n.StudentName'

EXEC sp_executesql @sql
/*******************************************************************************
*删除临时表
********************************************************************************/
DROP TABLE #Course

DROP TABLE #Score


如图


目录
相关文章
|
7月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
427 41
|
5月前
|
缓存 JSON API
VIN车辆识别码查询车五项 API 实践指南:让每一俩车有迹可循(Python代码示例)
VIN(车辆识别代码)是全球唯一的17位汽车标识码,可快速获取车架号、发动机号、品牌型号等核心信息。在二手车交易、保险理赔、维修保养等场景中,准确解析VIN有助于提升效率与风控能力。本文介绍VIN码结构、适用场景,并提供Python调用示例及优化建议,助力企业实现车辆信息自动化核验。
1039 1
|
4月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
575 2
|
3月前
|
安全 测试技术 虚拟化
VMware-三种网络模式原理
本文介绍了虚拟机三种常见网络模式(桥接模式、NAT模式、仅主机模式)的工作原理与适用场景。桥接模式让虚拟机如同独立设备接入局域网;NAT模式共享主机IP,适合大多数WiFi环境;仅主机模式则构建封闭的内部网络,适用于测试环境。内容简明易懂,便于理解不同模式的优缺点与应用场景。
498 0
|
5月前
|
存储 Ubuntu 安全
在Ubuntu 16.04上安装openjdk-6/7/8-jdk的步骤
在整个安装过程中,你可能需要管理员权限,因此你可能要使用 `sudo` 来获取必要的权限。记得做完每一个步骤后,都要检查输出,以确保没有发生错误,并且每项操作都成功完成。如果在安装过程中遇到问题,查看 `/var/log/` 下的日志文件对于问题的解决可能是有帮助的。
400 21
|
5月前
|
存储 网络协议 安全
HTTP 协议及会话跟踪机制详解
本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
598 1
|
4月前
|
JSON API 数据库
手机空号检测API:接口技术详解
介绍号码有效性检测技术,涵盖空号识别原理、高并发架构设计及Python集成示例,助力企业提升电销、风控等场景的运营效率,降低无效号码带来的资源浪费。
781 0
|
4月前
|
人工智能 JSON 供应链
揭秘电商 API 接口,让多平台库存实时更新不是梦
在电商多平台销售中,库存同步是关键难题。本文解析电商 API 接口如何实现库存实时更新,提升效率、减少超卖,保障客户体验与品牌信誉。
318 0
|
10月前
|
存储 人工智能 开发框架
Spring AI Alibaba 应用框架挑战赛圆满落幕,恭喜获奖选手
第二届开放原子大赛 Spring AI Alibaba 应用框架挑战赛决赛于 2 月 23 日在北京圆满落幕。
417 91
|
6月前
|
缓存 负载均衡 网络协议
电商API接口性能优化技术揭秘:缓存策略与负载均衡详解
电商API接口性能优化是提升系统稳定性和用户体验的关键。本文聚焦缓存策略与负载均衡两大核心,详解其在电商业务中的实践。缓存策略涵盖本地、分布式及CDN缓存,通过全量或部分缓存设计和一致性维护,减少后端压力;负载均衡则利用反向代理、DNS轮询等技术,结合动态调整与冗余部署,提高吞吐量与可用性。文中引用大型及跨境电商平台案例,展示优化效果,强调持续监控与迭代的重要性,为电商企业提供了切实可行的性能优化路径。

热门文章

最新文章