2017-03-02 141 views
1

在給定的表格中;我正在查詢以顯示某些列如下將數據顯示爲列

select an.animals_key,   
     an.anim_name, 
     an.sex, 
     an.date_of_birth, 
     tt.trait_key,    
     --case when tt.trait_key = 152 then 'Left Eye Pigment' 
      --when tt.trait_key = 153 then 'Right Eye Pigment' end as trait_key, 
     tt.trait_value, 
     tt.observation_date 

from animals an 
join traits tt on tt.soc_code = an.soc_code and tt.animals_key = an.animals_key and tt.trait_key in (152,153) 
where an.soc_code = 'AUHF' limit 10 

此查詢生成了以下數據。

enter image description here

有什麼辦法,我可以把152作爲一列和153成一列,這樣我可以把所有性狀值在這些列

+0

特徵值是否有所不同?它看起來像是100。 – peterm

回答

1

如果列數始終是預定義的(你的情況是152,153)你可以做條件彙總

select an.animals_key, an.anim_name, an.sex, an.date_of_birth, tt.observation_date 
     min(case when tt.trait_key = 152 then tt.trait_value end) "152", 
     min(case when tt.trait_key = 153 then tt.trait_value end) "153" 
    from animals an join traits tt 
    on tt.soc_code = an.soc_code 
    and tt.animals_key = an.animals_key 
    and tt.trait_key in (152, 153) 
where an.soc_code = 'AUHF' 
group by an.animals_key, an.anim_name, an.sex, an.date_of_birth, tt.observation_date