使用使用交叉表解决此查询

时间:2018-10-24 07:32:52

标签: sql pivot postgresql-9.1 crosstab

这是我的数据库表

| name |  |leave type|  |total lday|  |balance leave|  |balance|
|Nasrin|  |Annual    |  |3         |  |        14   |  |11     |
|labiba|  |Annual    |  |3         |  |        20   |  |17     |
|Zakir |  |Casual    |  |3         |  |        10   |  |7      |
|jabin |  |Earned    |  |3         |  |        14   |  |11     |

现在我要在此查询中进行一些修改

| name |  |Annual|   |Casual|  |Earned| |balance leave| |balance|
|Nasrin|  |3     |   |0     |  |0     | |        14   |  |11     |
|labiba|  |3     |   |0     |  |0     | |        20   |  |17     |
|Zakir |  |0     |   |3     |  |0     | |        10   |  |7      |
|jabin |  |0     |   |0     |  |3     | |        14   |  |11     |

1 个答案:

答案 0 :(得分:0)

您可以尝试使用条件聚合

select 
   name, 
   max(case when leave_type='Annual' then "total lday" end) as Annual,
   max(case when leave_type='Casual' then "total lday" end) as Casual,
   max(case when leave_type='Earned' then "total lday" end) as Earned,
   balance leave,balance
from tablename
group by name,balance leave,balance
相关问题