2
我有表所示:如何避免空行數據轉換爲列數據在mysql中值
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 |
我曾嘗試以下查詢:
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 | NULL |
| 775 | 001 | NULL | 8.00 |
| 775 | 001 | NULL | NULL |
| 775 | 001 | NULL | NULL |
| 776 | 001 | 4.00 | NULL |
| 776 | 001 | NULL | NULL |
+------------+---------------+---------+----------+
我不想NULL值。請幫助我。
謝謝,它的工作很好。 :) – Madhura