加入三行,如果一列中相同的值

有一个Postgres数据库和表有三个列。 数据结构在外部系统所以我不能修改它。

每个对象由三行(被列element_id——行相同的值在本专栏中代表同一个对象),例如:

key value element_id

status active 1
name exampleNameAAA 1
city exampleCityAAA 1
status inactive 2
name exampleNameBBB 2
city exampleCityBBB 2
status inactive 3
name exampleNameCCC 3
city exampleCityCCC 3
我想要所有的值描述每个对象(名称、状态和城市)。

对于这个示例的输出应该是:

exampleNameAAA | active | exampleCityAAA
exampleNameBBB | inactive | exampleCityBBB
exampleNameCCC | inactive | exampleCityCCC
我知道如何加入两行:

select a.value as name,
b.value as status
from the_table a
join the_table b
on a.element_id = b.element_id
and b."key" = 'status'
where a."key" = 'name';
怎么可能加入三列?

猜你喜欢

转载自blog.51cto.com/14021402/2321271