如何在mysql中通过避免空值将行数据转换为列数据

如何在mysql中通过避免空值将行数据转换为列数据,mysql,Mysql,我的桌子像: emp_number | leave_status | leave_length_days | leave_type_id | +------------+--------------+-------------------+---------------+ | 775 | 3 | 1.00 | 001 | | 775 | 1 | 1.0

我的桌子像:

 emp_number | leave_status | leave_length_days | leave_type_id |
+------------+--------------+-------------------+---------------+
|        775 |            3 |              1.00 | 001           |
|        775 |            1 |              1.00 | 001           |
|        775 |            1 |              1.00 | 001           |
|        775 |            3 |              1.00 | 001           |
|        775 |            3 |              0.50 | 001           |
|        775 |            1 |              1.00 | 001           |
|        775 |            1 |              1.00 | 001           |
|        775 |            2 |              1.00 | 001           |
|        775 |           11 |              1.00 | 001           |
|        775 |           11 |              1.00 | 001           |
|        775 |            2 |              1.00 | 001           |
|        775 |            2 |              1.00 | 001           |
|        776 |            1 |              1.00 | 001           |
|        776 |            1 |              1.00 | 001           |
|        776 |            4 |              0.00 | 001           |
|        776 |            4 |              0.00 | 001           |
|        776 |            1 |              1.00 | 001           |
|        776 |            1 |              1.00 | 001          
我想要像这样的输出:

+------------+---------------+---------+----------+
| emp_number | leave_type_id | pending | approved |
+------------+---------------+---------+----------+
|        775 | 001           |    4.00 |     8.00 |
|        776 | 001           |    4.00 |     NULL |
+------------+---------------+---------+----------+
| emp_number | leave_type_id | pending | approved |
+------------+---------------+---------+----------+
|        775 | 001           |    4.00 |     NULL |
|        775 | 001           |    NULL |     8.00 |
|        775 | 001           |    NULL |     NULL |
|        775 | 001           |    NULL |     NULL |
|        776 | 001           |    4.00 |     NULL |
|        776 | 001           |    NULL |     NULL |
+------------+---------------+---------+----------+
我尝试了以下问题:

select emp_number
     , leave_type_id
     , (CASE WHEN leave_status=1 THEN sum(leave_length_days) END) pending
     , (CASE WHEN leave_status=2 THEN sum(leave_length_days) END) approved 
  from em_leave 
 where emp_number in (775,776) 
 group 
    by emp_number
     , leave_status
     , leave_type_id;
但它给了我这样的输出:

+------------+---------------+---------+----------+
| emp_number | leave_type_id | pending | approved |
+------------+---------------+---------+----------+
|        775 | 001           |    4.00 |     8.00 |
|        776 | 001           |    4.00 |     NULL |
+------------+---------------+---------+----------+
| emp_number | leave_type_id | pending | approved |
+------------+---------------+---------+----------+
|        775 | 001           |    4.00 |     NULL |
|        775 | 001           |    NULL |     8.00 |
|        775 | 001           |    NULL |     NULL |
|        775 | 001           |    NULL |     NULL |
|        776 | 001           |    4.00 |     NULL |
|        776 | 001           |    NULL |     NULL |
+------------+---------------+---------+----------+
我不想要空值。请在这方面帮助我。

删除组中的休假状态,方法是,将汇总放在案例表达式的旁边:

我假设您使用的是MySQL,因为它是唯一一个允许使用这种SHT的DBMS