欢迎光临
我们一直在努力

SQL知识点之列转行Unpivot函数

前言

这是总结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用法

总结

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

原文链接:https://ask.hellobi.com/blog/datafrog/35942

赞(0) 打赏
主机商所有内容均来自网络,若无意侵犯到您的权利,请及时与联系 QQ 2232175042,将在48小时内删除相关内容!!主机测评网 » SQL知识点之列转行Unpivot函数

主机商评测网 找服务器 更专业 更方便 更快捷!

专注IDC行业资源共享发布,给大家带来方便快捷的资源查找平台!

联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫