将行拆分为列MySQL

时间:2014-01-23 07:07:26

标签: mysql

我只是不知道创建视图的正确语法。

员工

|nik    |   name  |

 112         john

 113         smith

absen

|kode_asben| ket_absen|

   hdr       Hadir

   skt         sakit

detail_absen

|NIK |Kode_absen|

112       hdr

113       skt

112       hdr

113       hdr

这里的视图表应该是

|nik   | Hadir   | Sakit |

112       2           0

113       1           1

1 个答案:

答案 0 :(得分:0)

您可以使用条件聚合

SELECT nik,
       SUM(Kode_absen = 'hdr') Hadir,
       SUM(Kode_absen = 'skt') Sakit
  FROM detail_absen 
 GROUP BY nik

SELECT e.nik,
       IFNULL(SUM(d.kode_absen = 'hdr'), 0) Hadir,
       IFNULL(SUM(d.kode_absen = 'skt'), 0) Sakit
  FROM employee e LEFT JOIN detail_absen d 
    ON e.nik = d.nik
 GROUP BY e.nik;

取决于您的需求

示例输出:

| NIK | HADIR | SAKIT |
|-----|-------|-------|
| 112 |     2 |     0 |
| 113 |     1 |     1 |

这是 SQLFiddle 演示