SQL知识点之列转行Unpivot函数

2025-05-25 0 27

前言

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

先看一个小问题SQL知识点之列转行Unpivot函数customercustomer

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

SQL知识点之列转行Unpivot函数unpivotunpivot

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

先创建数据

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

查看数据如下:

SQL知识点之列转行Unpivot函数datadataupivot 实现行转列

?
1
2
3
4
5
6
7
select * from dbo.customerphones -----数据源
 unpivot
(
  phone for phones in (phone1, phone2, phone3)
   ##phone1、phone2、phone3这些列的结果转为行上的结果,成为一列,
  ##并且有了新的列名为phone
) up

结果如下:

SQL知识点之列转行Unpivot函数resultresult

参考文献:

1.use sql server\’s unpivot operator to help normalize output

2.sql之行转列pivot用法

总结

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 SQL知识点之列转行Unpivot函数 https://www.kuaiidc.com/51747.html

相关文章

发表评论
暂无评论