如何在 postgreSQL 的一行中获取多个值?
How to get multiple value in one row in postgreSQL?
我有数据库 table name emp_leave in postgreSQL9.4 like
|emp_name|leave_type|total_lday|
| Tame | PL | 3 |
| Tame | UL | 4 |
我想要这样的查询结果
|emp_name|paid_leave|unpaid_leave|
| Tame | 3 | 4 |
您可以尝试以下 - 使用条件聚合
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
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 操作”。)
我有数据库 table name emp_leave in postgreSQL9.4 like
|emp_name|leave_type|total_lday|
| Tame | PL | 3 |
| Tame | UL | 4 |
我想要这样的查询结果
|emp_name|paid_leave|unpaid_leave|
| Tame | 3 | 4 |
您可以尝试以下 - 使用条件聚合
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
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 操作”。)