oracle列轉行
阿新 • • 發佈:2020-08-07
unpivot()函式
需要Oracle版本大於等於11g
--建立表
createtableFruit(idint,namevarchar(20),Q1int,Q2int,Q3int,Q4int);
--插入資料
insertintoFruitvalues(1,'蘋果',1000,2000,3300,5000); insertintoFruitvalues(2,'橘子',3000,3000,3200,1500); insertintoFruitvalues(3,'香蕉',2500,3500,2200,2500); insertintoFruitvalues(4,'葡萄',1500,2500,1200,3500);
--查詢資料
select*fromFruit;
--列轉行查詢
selectid,name,jidu,xiaoshoufromFruitunpivot(xiaoshouforjiduin(q1,q2,q3,q4))
注意:
unpivot沒有聚合函式,xiaoshou、jidu欄位也是臨時的變數。等同於下面的SQL:
selectid,name,'Q1'jidu,(selectq1fromfruitwhereid=f.id)xiaoshoufromFruitf union selectid,name,'Q2'jidu,(selectq2fromfruitwhereid=f.id)xiaoshoufromFruitf union selectid,name,'Q3'jidu,(selectq3fromfruitwhereid=f.id)xiaoshoufromFruitf union selectid,name,'Q4'jidu,(selectq4fromfruitwhereid=f.id)xiaoshoufromFruitf