kettle如何實現列轉行


本文主要記錄kettle列轉行控件的使用。

 

 原數據:

    目標數據:

 

 


1、用例腳本

create TABLE studentInfo
(
    studentno int,
    Cname varchar(10),
    grade int
);
insert into studentInfo values(2018100,'語文',81);
insert into studentInfo values(2018100,'數學',82);
insert into studentInfo values(2018100,'英語',83);

insert into studentInfo values(2018101,'語文',71);
insert into studentInfo values(2018101,'數學',71);
insert into studentInfo values(2018101,'英語',72);

insert into studentInfo values(2018102,'語文',91);
insert into studentInfo values(2018102,'數學',92);
insert into studentInfo values(2018102,'英語',93);


INSERT INTO studentInfo VALUES(2018103,'語文',60);
INSERT INTO studentInfo VALUES(2018103,'數學',61);
INSERT INTO studentInfo VALUES(2018103,'英語',94);
commit;

ktr文件如下所示:

 

 


表輸入

 

 


SELECT studentno,Cname,grade FROM studentInfo order by studentno

列轉行

 

 

 




excel文件輸出

 

 



運行后,excel文件內容

 

 



 

相當於sql語句:

SELECT *
FROM
(SELECT studentno, cname,grade
    FROM studentInfo) AS SourceTable
PIVOT
(
AVG(grade)
FOR Cname IN ([語文], [數學], [英語])
) AS PivotTable;

附: UNPIVOT

select * from () sourceTable UNPIVOT (計算列 for 新列名 in 原列名list) as UPV

例如:--Unpivot the table.
SELECT VendorID, Employee, Orders
FROM
   (SELECT VendorID, Emp1, Emp2, Emp3, Emp4, Emp5
   FROM pvt) p
UNPIVOT
   (Orders FOR Employee IN
      (Emp1, Emp2, Emp3, Emp4, Emp5)
)AS unpvt;
GO

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM