数据库SQL如何使用透视表PIVOT,实现数据行转列

在excel中有透视表的功能 , 在数据库中 , 也是有近似的语法的 。 好比 , 在供给商供货的订单表中 , 存储的是行记实 , 怎么才能按照供给商 , 按照年份汇总订单数目 , 而且实现行转列呢?这个时辰就需要利用PIVOT函数了

需要这些哦
sqlserver
方式/
1建立一个姑且表 , 用于演示sqlserver数据库中 , 若何利用透视表PIVOT , 实现行数据转当作列数据
IF OBJECT_ID('tempdb..#tblVor') IS NOT NULL DROP TABLE #tblVor; 
CREATE TABLE #tblVor(
    VorName varchar(50),     -- 供给商名称
    OrderNum int,                       -- 订单数目
    OrderYear int                         -- 订单年份   
);

数据库SQL如何使用透视表PIVOT,实现数据行转列

文章插图

2往姑且表中插入几行测试数据 , 模拟供给商供货的订单表
insert into #tblVor(VorName, OrderNum, OrderYear) values('供给商1', 1000, 2018);
insert into #tblVor(VorName, OrderNum, OrderYear) values('供给商1', 2000, 2017);
insert into #tblVor(VorName, OrderNum, OrderYear) values('供给商1', 3000, 2019);
【数据库SQL如何使用透视表PIVOT,实现数据行转列】insert into #tblVor(VorName, OrderNum, OrderYear) values('供给商2', 4000, 2019);

数据库SQL如何使用透视表PIVOT,实现数据行转列

文章插图

3查询姑且表中的测试数据
select * from #tblVor;

数据库SQL如何使用透视表PIVOT,实现数据行转列

文章插图

4起首筛选“供给商1”的供货数据 , 可以直接利用where前提过滤即可
select * from #tblVor where VorName = '供给商1';

数据库SQL如何使用透视表PIVOT,实现数据行转列

文章插图

5筛选“供给商1”的供货数据 , 按照年份排序 , 可以利用order by语句即可
select * from #tblVor where VorName = '供给商1' order by OrderYear;

数据库SQL如何使用透视表PIVOT,实现数据行转列

文章插图

6按照供给商汇总订单数目 , 就需要利用group by语句
select VorName, OrderNumTotal = sum(OrderNum) from #tblVor group by VorName;

数据库SQL如何使用透视表PIVOT,实现数据行转列

文章插图

7若是想要将行记实的供给商订单数目 , 转换为列数据 , 这个时辰就需要利用透视表PIVOT语法了
select VorName,[2017], [2018], [2019]
from #tblVor v
pivot(
     sum(v.OrderNum) for v.OrderYear in([2017], [2018], [2019])
)
as result

数据库SQL如何使用透视表PIVOT,实现数据行转列

文章插图


以上内容就是数据库SQL如何使用透视表PIVOT , 实现数据行转列的内容啦 , 希望对你有所帮助哦!

    推荐阅读