当前位置:首页 > 数据库 > SQL其他

DB2行转列(多维度)

---------------建表 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

查询结果如下:
DB2行转列(多维度) - 文章图片
--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

 

查询结果如下:

DB2行转列(多维度) - 文章图片

 

DB2行转列(多维度)

标签:

本文系统来源:http://www.cnblogs.com/OliverQin/p/5344659.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐