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

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.kler.cn/a/385569.html

相关文章:

  • 小程序中引入下载到本地的iconfont字体图标加载不出来问题解决
  • [免费]SpringBoot+Vue3校园宿舍管理系统(优质版)【论文+源码+SQL脚本】
  • 【Python】轻松解析JSON与XML:Python标准库的json与xml模块
  • 利用dem和DOM生成路线算法的实现
  • go生成4位随机数字
  • 5G智能对讲终端|北斗有源终端|北斗手持机|单兵|单北斗
  • 面试题:Spring(一)
  • 密码忘记了,如何取消excel编辑限制?
  • Hue组件相关问题-持续更新
  • 理解Rust 生命周期、所有权和借用机制
  • 运维故障与排查技巧
  • 【JavaEE进阶】导读
  • C++代码优化(二): 区分接口继承和实现继承
  • 【从零开始的LeetCode-算法】3254. 长度为 K 的子数组的能量值 I
  • linux服务器通过手机USB共享网络
  • 青少年编程与数学 02-003 Go语言网络编程 17课题、Go语言Cookie编程
  • 【HarmonyOS Next】封装一个网络请求模块
  • [vulnhub] DarkHole: 2
  • Android亮屏Job的功耗优化方案
  • django电商易购系统-计算机设计毕业源码61059
  • 阿里云ECS服务器使用限制及不允许做的事情
  • ai辅助开发一个简单的在线购物网站
  • VMware _ESXI安装初探
  • Kubernetes 调度器调度策略的资源分配不均问题如何解决?
  • 鸿蒙系统的优势 开发 环境搭建 开发小示例
  • 责任链模式(Chain of Responsibility Pattern)详解