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

 时间:2026-02-14 15:09:46

1、创建一个临时表,用于演示sqlserver数据库中,如何使用透视表PIVOT,实现行数据转成列数据

IF OBJECT_ID('tempdb..#tblVendor') IS NOT NULL DROP TABLE #tblVendor; 

CREATE TABLE #tblVendor(

    VendorName varchar(50),     -- 供应商名称

    OrderNum int,                       -- 订单数量

    OrderYear int                         -- 订单年份   

);

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

2、往临时表中插入几行测试数据,模拟供应商供货的订单表

insert into #tblVendor(VendorName, OrderNum, OrderYear) values('供应商1', 1000, 2018);

insert into #tblVendor(VendorName, OrderNum, OrderYear) values('供应商1', 2000, 2017);

insert into #tblVendor(VendorName, OrderNum, OrderYear) values('供应商1', 3000, 2019);

insert into #tblVendor(VendorName, OrderNum, OrderYear) values('供应商2', 4000, 2019);

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

3、查询临时表中的测试数据

select * from #tblVendor;

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

4、首先筛选“供应商1”的供货数据,可以直接使用where条件过滤即可

select * from #tblVendor where VendorName = '供应商1';

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

5、筛选“供应商1”的供货数据,按照年份排序,可以使用order by语句即可

select * from #tblVendor where VendorName = '供应商1' order by OrderYear;

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

6、按照供应商汇总订单数量,就需要使用group by语句

select VendorName, OrderNumTotal = sum(OrderNum) from #tblVendor group by VendorName;

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

7、如果想要将行记录的供应商订单数量,转换为列数据,这个时候就需要使用透视表PIVOT语法了

select VendorName,[2017], [2018], [2019]

from #tblVendor v

pivot(

     sum(v.OrderNum) for v.OrderYear in([2017], [2018], [2019])

)

as result

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

  • PowerQuery编辑器怎样快速对数据进行四则运算
  • 如何在Excel VBA中设置GetOpenFilename的参数
  • excel vba如何在指定位置插入指定格式的行
  • Excel如何实现按照关键词实现行列拼接
  • 在VBA中如何加载宏?
  • 热门搜索
    绵阳旅游学校 安徽旅游景点介绍 贵州旅游攻略景点必去 十月份去哪里旅游好 厦门旅游学校 中国互助旅游网 香港旅游须知 青岛旅游景点地图 骆驼旅游鞋 张家界旅游公司