当前位置: 首页 > news >正文

SQL server 列转行

在 SQL Server 中,将列转换为行的操作通常被称为“透视”(Pivot)的逆操作,即“反透视”(Unpivot)。SQL Server 提供了 UNPIVOT 关键字来实现这一功能。假设你有一个表 EmployeeDetails,其中包含员工的一些详细信息,如下所示:

CREATE TABLE EmployeeDetails (EmployeeID INT,Name VARCHAR(50),Age INT,Salary DECIMAL(10, 2),Department VARCHAR(50)
);INSERT INTO EmployeeDetails (EmployeeID, Name, Age, Salary, Department)
VALUES 
(1, '张三', 30, 5000.00, '开发部'),
(2, '李四', 35, 6000.00, '市场部');

你希望将每一行的数据转换为多行,每行只包含一个属性值。可以使用 UNPIVOT 来实现这一点。

示例 SQL 查询

SELECT EmployeeID, Attribute, Value
FROM EmployeeDetails
UNPIVOT (Value FOR Attribute IN (Name, Age, Salary, Department)
) AS UnpivotedData;

结果执行上述查询后,

结果将会是:

解释

1. UNPIVOT 关键字:UNPIVOT 关键字用于将列转换为行。

2. Value FOR Attribute IN (Name, Age, Salary, Department):这部分指定了哪些列将被转换为行,并且指定了新的列名 Attribute 和 Value。

3. AS UnpivotedData:给生成的结果集一个别名 UnpivotedData。

注意事项

•数据类型:确保所有被转换的列具有兼容的数据类型。如果列的数据类型不同,可能需要进行类型转换。

•性能:对于大数据量的表,UNPIVOT 操作可能会有一定的性能影响,需要根据实际情况进行优化。

示例:包含不同类型数据的转换

假设 EmployeeDetails 表中包含不同类型的数据,如字符串、整数和小数。可以使用 CAST 或 CONVERT 进行类型转换,以确保所有值都转换为相同的类型。 

SELECT EmployeeID, Attribute, Value
FROM EmployeeDetails
UNPIVOT (Value FOR Attribute IN (CAST(Name AS VARCHAR(50)),CAST(Age AS VARCHAR(50)),CAST(Salary AS VARCHAR(50)),CAST(Department AS VARCHAR(50)))
) AS UnpivotedData;

结果

执行上述查询后,结果将会是:


http://www.mrgr.cn/news/65511.html

相关文章:

  • B2109 统计数字字符个数
  • SystemC简明教程
  • 什么是人工智能学习框架?——人工智能技术科普指南
  • 使用Git LFS管理大型文件
  • 基于SSM+小程序的高校寻物平台管理系统(失物1)
  • Django视图写法
  • 记录一次node节点异常的排查
  • Python下的卡尔曼和贝叶斯滤波器
  • 互联网十万个为什么之什么是DDoS攻击?
  • 【论文复现】ChatGPT多模态命名实体识别
  • 什么是SRRC认证?蓝牙模块需要过SRRC认证吗?
  • 在路由引入时应用路由策略示例
  • Spring Boot代理问题
  • 后端java——如何为你的网页设置一个验证码
  • Arduino平台软硬件原理及使用——热释电传感器的使用
  • ChatGPT多模态命名实体识别
  • 哈希表,哈希桶及配套习题
  • qml 图片浏览器旋转、按鼠标缩放
  • 引领数字时代:万码优才如何变革IT人才招聘新体验(这里有更精准的推荐)
  • CasaOS香橙派安装HomeAssistant智能家居系统并实现远程管理家中智能设备
  • 【云原生开发】K8S多集群资源管理平台架构设计
  • 第30周:彩色图片分类(Tensorflow实战第二周)
  • Feign调用第三方,想要单独的拦截器,但是变为全局拦截器
  • 基于 RNN 的语言模型
  • 如何提高总线抗扰度之EFT篇
  • python常用的第三方库下载方法