MSSQL·UNPIVOT关键字实现行转列
2021/8/16 2:35:39
本文主要是介绍MSSQL·UNPIVOT关键字实现行转列,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
阅文时长 | | 0.74分钟 | 字数统计 | | 1185.6字符 |
主要内容 | | 1、引言&背景 2、UNPIVOT基本语法结构 3、数据准备&行转列实现 4、声明与参考资料 | ||
『MSSQL·UNPIVOT关键字实现行转列』 | |||
编写人 | | SCscHero | 编写时间 | | 2021/8/14 PM9:27 |
文章类型 | | 系列 | 完成度 | | 已完成 |
座右铭 | 每一个伟大的事业,都有一个微不足道的开始。 |
一、引言&背景 完成度:100%
a) 应对问题
UNPIVOT关键字如何实现行转列?
b) 应对场景
- 如图,员工第一季度工资表,实现行转列。以单表的多个字段拆分成多行数据。
- 仍适用于多字段存储同级数据的,例如学生成绩表,按学生维度存储各科学习成绩。
二、UNPIVOT基本语法结构 完成度:100%
UNPIVOT语法结构如下:
-- UNPIVOT 语法 SELECT [columns not unpivoted], [unpivot_column], [value_column], FROM (<source query>) AS <alias for the source data> UNPIVOT ( [value_column] FOR [unpivot_column] IN ( <column_list> ) ) AS <alias for unpivot> --[columns not unpivoted]: 固定列,即不经过转换的,直接查出来的列。 --[unpivot_column]: 需要被拆分的列名称。 --[value_column]: 需要被拆分的列对应的值。 --<source query>: 数据结果集。 --<alias for the source data>: 数据结果集别名,必须结构,可省略AS。 --<column_list>: 需要被拆分的各列的名称。 --<alias for unpivot>: 行转列过程结果集的别名,必须结构,可省略AS。
三、数据准备&行转列实现 完成度:100%
a) 数据准备
--示例:员工工资表 USE SCscHero_001_SSMSCode CREATE TABLE [dbo].[实战设计_002_PIVOT实现行转列] ( [EID] INT NOT NULL PRIMARY KEY IDENTITY, [EName] NCHAR(10) NULL, [Year] NCHAR(10) NULL, [JanuaryMoney] DECIMAL NULL, [FebruaryMoney] DECIMAL NULL, [MarMoney] DECIMAL NULL, ) INSERT INTO 实战设计_002_PIVOT实现行转列 VALUES(N'张三', '2021', 10, 0, 90); INSERT INTO 实战设计_002_PIVOT实现行转列 VALUES(N'赵四', '2021', 10, 0, 60); INSERT INTO 实战设计_002_PIVOT实现行转列 VALUES(N'王五', '2021', 10, 0, 80); INSERT INTO 实战设计_002_PIVOT实现行转列 VALUES(N'李六', '2021', 10, 0, 30); INSERT INTO 实战设计_002_PIVOT实现行转列 VALUES(N'田七', '2021', 10, 0, NULL); INSERT INTO 实战设计_002_PIVOT实现行转列 VALUES(N'速八', '2021', 10, 0, 34); INSERT INTO 实战设计_002_PIVOT实现行转列 VALUES(N'玖九', '2021', 10, 0, 8);
数据如下图:
b) 行转列实现
SELECT T.EID, T.EName, T.Year, --[columns not unpivoted] T.Month, --[unpivot_column] T.Money --[value_column] FROM(SELECT * FROM dbo.实战设计_002_PIVOT实现行转列) AS UP UNPIVOT([Money] FOR --[value_column] [Month] --[unpivot_column] IN([JanuaryMoney], [FebruaryMoney], [MarMoney]) --column_list ) AS T;
四、声明与参考资料 完成度:100%
原创博文,未经许可请勿转载。
如有帮助,欢迎点赞、收藏、关注。如有问题,请评论留言!如需与博主联系的,直接博客私信SCscHero即可。
这篇关于MSSQL·UNPIVOT关键字实现行转列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-08Docker下的SqlServer发布订阅启用
- 2023-06-05Docker安装MS SQL Server并使用Navicat远程连接
- 2023-05-25深入浅出 SQL Server CDC 数据同步
- 2023-05-12通过空间占用和执行计划了解SQL Server的行存储索引
- 2023-04-24以SQLserver为例的Dapper详细讲解
- 2022-11-30SQL server高级函数查询
- 2022-11-26SQL SERVER数据库服务器CPU不能全部利用原因分析
- 2022-11-21SQL Server 时间算差值/常用函数
- 2022-11-20调试Archery连接SQL Server提示驱动错误
- 2022-10-22SQL Server 完整、差异备份+完整、差异还原(详细讲解,规避错误)