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

2025-04-06 16:38:54

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 vpivot( sum(v.OrderNum) for v.OrderYear in([2017], [2018], [2019]))as result

数据库SQL如何使用透视表PIVOT,实现数据行转列
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢