mysql 列转行 unpivot_SQL知识点之列转行Unpivot函数

前言

这是总结SQL知识点的第二篇文章,一次只总结一个知识点,尽量说明白。上次我们谈到行转列,用的是Pivot函数,这次我们来谈谈Unpivot函数。(这里是用的数据库是SQLSERVER,与其他数据库是类似的,大家放心看就好)

先看一个小问题

7b4d7ba46ca90ae387cf346c6defb47b.pngCustomerCustomer

在这张图中,表示的是顾客用不同手机号给Phone1、Phone2、Phone3拨打电话的情况,但是机灵的你,想变个花样来看看,比如下面这样的。

4d64de482d30bca682cc77bd24714a07.pngUnpivotUnpivot

大家想想看如何实现呢?想下,2分钟后再看哟

先创建数据

CREATE TABLE dbo.CustomerPhones

(

CustomerID INT PRIMARY KEY, -- FK

Phone1 VARCHAR(32),

Phone2 VARCHAR(32),

Phone3 VARCHAR(32)

);

INSERT dbo.CustomerPhones

(CustomerID, Phone1, Phone2, Phone3)

VALUES

(1,'705-491-1111', '705-491-1110', NULL),

(2,'613-492-2222', NULL, NULL),

(3,'416-493-3333', '416-493-3330', '416-493-3339');

select * from dbo.CustomerPhones

查看数据如下:

b2c9912fc48c46dd6c6b78deb5110e34.pngDataDataUpivot 实现行转列

select * from dbo.CustomerPhones -----数据源

unpivot

(

Phone FOR Phones IN (Phone1, Phone2, Phone3)

##Phone1、Phone2、Phone3这些列的结果转为行上的结果,成为一列,

##并且有了新的列名为Phone

) up

结果如下:

8645240fb747c04ba36ea750a73066e5.pngResultResult

参考文献:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,你的问题中提到了MySQL列转行操作,但是引用的内容是关于SQL Server的。在MySQL中,并没有内置的UNPIVOT函数,但是可以使用UNION操作实现类似的功能。下面是一个示例: ``` SELECT 姓名, '语文' AS 课程, 语文 AS 分数 FROM tb UNION ALL SELECT 姓名, '数学' AS 课程, 数学 AS 分数 FROM tb UNION ALL SELECT 姓名, '物理' AS 课程, 物理 AS 分数 FROM tb; ``` 以上查询将会将tb表中的数据从列转换成行,并分为姓名、课程和分数三列。每个UNION ALL子句表示一个转换的列。 请注意,这只是一种在MySQL中实现列转行的方式之一,具体的实现方式可能因数据库版本和表结构而有所不同。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SQL知识点列转行Unpivot函数](https://blog.csdn.net/weixin_30420045/article/details/113437799)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [T-Sql语法:行转列(pivot)和列转行unpivot)](https://blog.csdn.net/weixin_35975406/article/details/113437796)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值