在给定的表格中;我正在查询显示某些列,如下所示
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
此查询产生了以下数据。
有什么办法,我可以将152作为一列,将153作为一列,以便我可以将所有特征值放在这些列中
答案 0 :(得分: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