2013-09-18 4 views
1

Я прошел через все подобные темы и, похоже, не могу решить свою проблему. У меня есть таблица вроде этого:postgresql транспонировать строки столбцов несчастье

 
id[PK]  key[PK]  value 
-------------------------------- 
22   ingfs  east1 
22   storage  stgeast1 
23   ingfs  east2 
23   storage  stgeast2 
24   ingfs  east3 
24   storage  stgeast3 

Я хочу получить:

 
ingfs storage 
---------------- 
east1 stgeast1 
east2 stgeast2 
east3 stgeast3 

Я попытался пример сводной таблицы, но не похоже, чтобы быть в состоянии получить что-нибудь работать. Похоже, это должно быть просто, но я не могу обмануть голову. Спасибо заранее за любую помощь.

rjl

ответ

0

Будет ли следующая работа для вас?

WITH i AS (
    SELECT id, 
      value 
     FROM table_name 
     WHERE key = 'ingfs'), 
s AS (
    SELECT id, 
      value 
     FROM table_name 
     WHERE key = 'storage') 
SELECT i.value AS ingfs, 
     s.value AS storage 
    FROM i 
    JOIN s on (i.id = s.id) ; 
2
select 
    max(case when key = 'ingfs' then value end) as ingfs, 
    max(case when key = 'storage' then value end) as storage 
from Table1 
group by id 
order by 1, 2 

sql fiddle demo

Смежные вопросы