mysql 列转行 unpivot_SQL 之列转行Unpivot函数

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

先看一个小问题

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

大家想想看如何实现呢?想下,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

查看数据如下:

Upivot 实现行转列

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

unpivot

(

Phone FOR Phones IN (Phone1, Phone2, Phone3)

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

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

) up

结果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值