Как получить несколько значений в одной строке в PostgreSQL? - PullRequest
0 голосов
/ 02 января 2019

У меня есть имя таблицы базы данных emp_leave в postgreSQL9.4, как

|emp_name|leave_type|total_lday|
| Tame   |    PL    |     3    |
| Tame   |    UL    |     4    |

Я хочу получить результат запроса как

|emp_name|paid_leave|unpaid_leave|
| Tame   |    3     |      4     |    

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Postgresql 9.4 также содержит условие FILTER для условного агрегирования:

select emp_name, 
       max(total_lday) FILTER (where leave_type = 'PL') as paid_leave,
       max(total_lday) FILTER (where leave_type = 'UL') as unpaid_leave
from emp_leave
group by emp_name

(ANSI SQL-2016, функция T612, «Расширенные операции OLAP».)

0 голосов
/ 02 января 2019

Вы можете попробовать ниже - используя условное агрегирование

select emp_name, 
  max(case when leave_type='PL' then total_lday end) as paid_leave,
  max(case when leave_type='UL' then total_lday end) as unpaid_leave
from emp_leave
group by emp_name
...