在Unpivot ORACLE之后重新排列列

时间:2013-01-24 17:37:23

标签: sql oracle oracle11g unpivot

如果我从以下开始:

SELECT * FROM unpivot_test;

         ID CUSTOMER_ID PRODUCT_CODE_A PRODUCT_CODE_B PRODUCT_CODE_C PRODUCT_CODE_D
 ---------- ----------- -------------- -------------- -------------- --------------
     1         101             10             20             30
     2         102             40                            50
     3         103             60             70             80             90
     4         104            100

当我Unpivot我得到值

SELECT *
FROM   unpivot_test
UNPIVOT (quantity FOR product_code IN (product_code_a AS 'A', product_code_b AS 'B', product_code_c AS 'C', product_code_d AS 'D'));

        ID CUSTOMER_ID  P   QUANTITY
---------- ----------- --- ----------
     1         101     A         10
     1         101     B         20
     1         101     C         30
     2         102     A         40
     2         102     C         50
     3         103     A         60
     3         103     B         70
     3         103     C         80
     3         103     D         90
     4         104     A        100

如果我想这样做,以便数量列显示在P列之前,我将如何做到这一点,我基本上想要

        ID CUSTOMER_ID   QUANTITY    P
---------- ----------- -----------  ----------
     1         101     10           A
     1         101     20           B

.....

oracle版本是11g

1 个答案:

答案 0 :(得分:2)

SELECT ID, CUSTOMER_ID, QUANTITY, P FROM
(SELECT *
FROM   unpivot_test
UNPIVOT (quantity FOR product_code IN (product_code_a AS 'A', product_code_b AS 'B',  
product_code_c AS 'C', product_code_d AS 'D')));