本文主要記錄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