多維度下進行行列轉換,下面的行列轉換時根據客戶,所屬銀行機構進行的行列轉換。
-----------------建表 CREATE TABLE CUST_BANK_INFO ( CUST_ID VARCHAR(10), CUST_NAME VARCHAR(100), BANK_NO VARCHAR(100), BANK VARCHAR(100), MONEY_TYPE_NO VARCHAR(100), MONEY_TYPE VARCHAR(100), MONEY INT ); INSERT INTO CUST_BANK_INFO VALUES('C001','允賢','B01','中國銀行','MT01','理財',10000); INSERT INTO CUST_BANK_INFO VALUES('C002','李四','B01','中國銀行','MT02','貸款',20390); INSERT INTO CUST_BANK_INFO VALUES('C003','王五','B01','中國銀行','MT03','存款',29301); INSERT INTO CUST_BANK_INFO VALUES('C004','陳六','B01','中國銀行','MT04','教育儲蓄',10000); INSERT INTO CUST_BANK_INFO VALUES('C001','允賢','B02','中國銀行','MT01','理財',20000); INSERT INTO CUST_BANK_INFO VALUES('C005','JACK','B02','工商銀行','MT05','理財',10001); INSERT INTO CUST_BANK_INFO VALUES('C006','王三','B02','工商銀行','MT06','貸款',10002); INSERT INTO CUST_BANK_INFO VALUES('C007','劉六','B02','工商銀行','MT07','存款',10003); INSERT INTO CUST_BANK_INFO VALUES('C008','鄭七','B02','工商銀行','MT08','教育儲蓄',10004);
SELECT * FROM CUST_BANK_INFO
查詢結果如下:

--DELETE FROM CUST_BANK_INFO DROP TABLE Mapping; CREATE TABLE Mapping ( CN_NAME VARCHAR(100), Code_L VARCHAR(10), Code_N VARCHAR(10) ) INSERT INTO Mapping values('理財','MT01','BANK_01'); INSERT INTO Mapping values('理財','MT05','BANK_01'); INSERT INTO Mapping values('貸款','MT02','BANK_02'); INSERT INTO Mapping values('貸款','MT06','BANK_02'); INSERT INTO Mapping values('存款','MT03','BANK_03'); INSERT INTO Mapping values('存款','MT07','BANK_03'); INSERT INTO Mapping values('教育儲蓄','MT04','BANK_04'); INSERT INTO Mapping values('教育儲蓄','MT08','BANK_04'); SELECT CUST_ID, CUST_NAME, BANK_NO, BANK, max(CASE WHEN B.Code_N='BANK_01' THEN MONEY ELSE '0' END) AS 理財, max(CASE WHEN B.Code_N='BANK_02' THEN MONEY ELSE '0' END) AS 貸款, max(CASE WHEN B.Code_N='BANK_03' THEN MONEY ELSE '0' END) AS 存款, max(CASE WHEN B.Code_N='BANK_04' THEN MONEY ELSE '0' END) AS 教育儲蓄 FROM CUST_BANK_INFO A LEFT JOIN MAPPING B ON A.MONEY_TYPE_NO=B.Code_L group by CUST_ID,CUST_NAME,BANK,BANK_NO
查詢結果如下:

