2017-04-11 43 views
0

選擇第一,第二和第三大的數字我有這樣的表結構甲骨文 - 在multple列

CLIENT_ID | QTY_A | QTY_B | QTY_C | QTY_D | QTY_E 
==================================================== 
1   |  20|  21|  19| NULL| 30 
---------------------------------------------------- 
2   |  45| NULL|  31|  80| 54 
---------------------------------------------------- 

,我試圖來計算,爲WACH CLIENT_ID,第一,第二和第三大值。

我該如何做到這一點?分析函數不能幫助我,對吧?我不能只按一個專欄排序。

在此先感謝。

+0

如果'QTY_A'和'QTY_B'列具有相等的最大值,那麼你需要他們兩個?或獨特? –

回答

0

使用UNPIVOT的列行,然後ROW_NUMBER解析函數轉換爲數字的行:

SELECT client_id, 
     type, 
     quantity 
FROM (
    SELECT client_id, 
     type, 
     quantity, 
     ROW_NUMBER() OVER (PARTITION BY client_id ORDER BY quantity DESC) AS rn 
    FROM table_name 
    UNPIVOT (quantity FOR type IN (qty_a, qty_b, qty_c, qty_d, qty_e)) 
) 
WHERE rn <= 3