2017-07-17 21 views

回答

0

您可以使用PIVOT條款。 但是,您需要爲每個帳戶分配它在課程中的列名稱。 您可以使用row_number,rank或dense_rank。

WITH tab AS 
(SELECT 'A1' ACCOUNT, 'C1' CLASS FROM dual UNION ALL 
SELECT 'A2' ACCOUNT, 'C2' CLASS FROM dual UNION ALL 
SELECT 'A3' ACCOUNT, 'C1' CLASS FROM dual UNION ALL 
SELECT 'A4' ACCOUNT, 'C3' CLASS FROM dual UNION ALL 
SELECT 'A5' ACCOUNT, 'C3' CLASS FROM dual UNION ALL 
SELECT 'A6' ACCOUNT, 'C2' CLASS FROM dual UNION ALL 
SELECT 'A7' ACCOUNT, 'C1' CLASS FROM dual UNION ALL 
SELECT 'A8' ACCOUNT, 'C4' CLASS FROM dual UNION ALL 
SELECT 'A9' ACCOUNT, 'C5' CLASS FROM dual UNION ALL 
SELECT 'A10' ACCOUNT, 'C1' CLASS FROM dual UNION ALL 
SELECT 'A11' ACCOUNT, 'C2' CLASS FROM dual UNION ALL 
SELECT 'A12' ACCOUNT, 'C1' CLASS FROM dual UNION ALL 
SELECT 'A13' ACCOUNT, 'C3' CLASS FROM dual UNION ALL 
SELECT 'A14' ACCOUNT, 'C3' CLASS FROM dual UNION ALL 
SELECT 'A15' ACCOUNT, 'C2' CLASS FROM dual UNION ALL 
SELECT 'A16' ACCOUNT, 'C1' CLASS FROM dual UNION ALL 
SELECT 'A17' ACCOUNT, 'C1' CLASS FROM dual) 
SELECT * 
    FROM (SELECT CLASS, 
       ACCOUNT, 
       row_number() OVER (PARTITION BY class ORDER BY account) col_num 
      FROM tab) 
PIVOT (MAX(account) FOR col_num IN (1,2,3,4,5,6,7,8)) 

本示例按字母順序對帳戶進行排序(A1,A10,A12,A16,A3,A7,...)。 如果您需要其他排序,在row_number函數的ORDER BY子句中實現也不難。