2014-09-11 72 views
1

我的數據看起來像一個單獨的列:取出一個數值爲依賴於另一列

col1 col2 attr val 
ABC  123  A  10 
ABC  123  B  18 
XYZ  123  A  5 
XYZ  123  B  11 
ABC  888  A  24 
ABC  888  B  13 
XYZ  888  A  25 
. 
. 
. 

COL1的基本上各種組合,存在COL2;並且對應於與它們相關聯的每個attr,它們具有用於val的單獨記錄。

我需要在輸出形式:

col1 col2 A_val B_val 
ABC  123  10  18 
XYZ  123  5  11 

(爲col1 col2每個唯一組合)

這種類型的查詢對我來說是一個新的領域,所以我不知道在哪裏開始。這可能會涉及到像CASE WHEN attr='A' THEN val END as A_val,但我不知道如何構造它。

回答

1

你可以這樣做:

SELECT col1, 
     col2, 
     MAX(CASE WHEN attr='A' THEN val END) A_val, 
     MAX(CASE WHEN attr='B' THEN val END) B_val 
    FROM table_name 
GROUP BY col1, 
     col2 

由於NULL小號放在最後降序排序,並CASE回報NULL對於沒有條件匹配,MAX會給你爲每列正確的屬性。