2016-10-27 2 views
0

Вот образец:обращенных в соответствующий столбец в PostgreSQL

select * from tmp 

--output 
A  B  Value 
--------------------- 
a  x  1 
b  x  2 
a  y  3 
b  y  4 
c  y  5 

После команды SQL группировки на колонке B, Я хотел бы, чтобы каждое значение столбца A, чтобы быть отдельной колонкой, как показано ниже :

B  a  b  c 
---------------------------- 
x  1  2  null 
y  3  4  5 

Если есть какая-либо конкретная терминология для этого преобразования? Благодаря!

+0

Каков ожидаемый результат, если кто-то вдруг вставит (e, v, 6)? – jarlh

+0

Затем он должен иметь другой столбец с именем v, значение которого равно null для всех x и y, за исключением того, что для v это 6. @jarlh – KAs

ответ

0

Вам нужно найти максимальное значение другого значения и сгруппировать его с помощью столбца-якоря (b в вашем случае). Обратите внимание, что количество столбцов должно совпадать с количеством ожидаемых значений в поле A.

select b, 
max(case when A='a' then Value else null end)a, 
max(case when A='b' then Value else null end)b, 
max(case when A='c' then Value else null end)c 
from tmp 
group by 1 
+0

что, если значение столбца A является неопределенным? Есть ли способ сделать это без повторного использования значения A вручную? – KAs

+0

Для этого вы можете использовать функцию перетаскивания; http://stackoverflow.com/questions/23060256/postgres-transpose-rows-to-columns –

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