【问题标题】:How to get multiple value in one row in postgreSQL?如何在 postgreSQL 的一行中获取多个值?
【发布时间】:2023-03-31 13:51:01
【问题描述】:

我在 postgreSQL9.4 中有数据库表名 emp_leave,比如

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

我想要这样的查询结果

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

【问题讨论】:

    标签: sql postgresql-9.4


    【解决方案1】:

    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 操作”。)

    【讨论】:

      【解决方案2】:

      您可以在下面尝试 - 使用条件聚合

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-11
        • 2013-06-26
        • 1970-01-01
        • 2021-01-07
        • 2014-10-08
        相关资源
        最近更新 更多