數據庫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 , 實現數據行轉列的內容啦 , 希望對你有所幫助哦!

    猜你喜歡