在excel中有透视表的功能,在数据库中,也是有近似的语法的。好比,在供给商供货的订单表中,存储的是行记实,怎么才能按照供给商,按照年份汇总订单数目,而且实现行转列呢?这个时辰就需要利用PIVOT函数了
建立一个姑且表,用于演示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,[2017], [2018], [2019]
from #tblVendor v
pivot(
sum(v.OrderNum) for v.OrderYear in([2017], [2018], [2019])
)
as result
 
  
                    0 篇文章
 xiaonan123
                            189 文章
                            xiaonan123
                            189 文章
                         汤依妹儿
                            97 文章
                            汤依妹儿
                            97 文章
                         luogf229
                            46 文章
                            luogf229
                            46 文章
                         jy02406749
                            45 文章
                            jy02406749
                            45 文章
                         小凡
                            34 文章
                            小凡
                            34 文章
                         Daisy萌
                            32 文章
                            Daisy萌
                            32 文章
                         我的QQ3117863681
                            24 文章
                            我的QQ3117863681
                            24 文章
                         华志健
                            23 文章
                            华志健
                            23 文章
                         
                如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!