数据库SQL如何使用透视表PIVOT,实现数据行转列
来源:网络收集 点击: 时间:2024-04-04创建一个临时表,用于演示sqlserver数据库中,如何使用透视表PIVOT,实现行数据转成列数据
IF OBJECT_ID(tempdb..#tblVendor) IS NOT NULL DROP TABLE #tblVendor;
CREATE TABLE #tblVendor(
VendorName varchar(50), -- 供应商名称
OrderNum int, -- 订单数量
OrderYear int -- 订单年份
);

往临时表中插入几行测试数据,模拟供应商供货的订单表
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);

查询临时表中的测试数据
select * from #tblVendor;

首先筛选“供应商1”的供货数据,可以直接使用where条件过滤即可
select * from #tblVendor where VendorName = 供应商1;

筛选“供应商1”的供货数据,按照年份排序,可以使用order by语句即可
select * from #tblVendor where VendorName = 供应商1 order by OrderYear;

按照供应商汇总订单数量,就需要使用group by语句
select VendorName, OrderNumTotal = sum(OrderNum) from #tblVendor group by VendorName;

如果想要将行记录的供应商订单数量,转换为列数据,这个时候就需要使用透视表PIVOT语法了
select VendorName,, ,
from #tblVendor v
pivot(
sum(v.OrderNum) for v.OrderYear in(, , )
)
as result

版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_419110.html