2017-07-14 92 views
2

我有ff。数据..使用Pivot表的Mysql查询

 
    empID Login Date TimeIN TimeOut  
    1001  01/01/2017 08:00  17:00 
    1001  01/02/2017 07:59  17:02 
    1001  01/03/2017 07:54  17:05 
    1001  01/04/2017 08:00  17:04 
    1001  01/05/2017 07:56  17:03 
    1001  01/06/2017 07:52  17:01  
    1001  01/07/2017 07:53  17:02 

我所要的输出是这样的..

 
    EmpID mon   tue   wed   thu   fri 
    1001 08:00-17:00 7:59-17:02 07:54-17:05 08:00-17:04 07:56-17:03 

我有尝试使用此查询..

 
    select cEmpID,dDate, 
    (case DAYOFWEEK(dDate) WHEN 1 then CONCAT(cIn1,' - ',cOut2) else '' End) as 'Mon', 
    (case DAYOFWEEK(dDate) WHEN 2 then CONCAT(cIn1,' - ',cOut2) else '' End) as 'Tue', 
    (case DAYOFWEEK(dDate) WHEN 3 then CONCAT(cIn1,' - ',cOut2) else '' End) as 'Wed', 
    (case DAYOFWEEK(dDate) WHEN 4 then CONCAT(cIn1,' - ',cOut2) else '' End) as 'Thu', 
    (case DAYOFWEEK(dDate) WHEN 5 then CONCAT(cIn1,' - ',cOut2) else '' End) as 'Fri', 
    (case DAYOFWEEK(dDate) WHEN 6 then CONCAT(cIn1,' - ',cOut2) else '' End) as 'Sat', 
    (case DAYOFWEEK(dDate) WHEN 7 then CONCAT(cIn1,' - ',cOut2) else '' End) as 'Sun' 
    from tblattenddetail 
    Where cPeriodID='201702' 
    GROUP BY cEmpID 

但它不工作..

+0

你为什么要选择列表中拉dDate当你不希望它到结果? –

+0

检查这个答案,“https:// stackoverflow.com/questions/42408465/need-to-convert-columns-into-rows-in-mysql/42409047#42409047' –

+0

@chiragsatapara,这个查询可以通过使用case只要。不需要在这里使用枢轴。 –

回答

0

请尝试以下查询 -

SELECT empID, 
     MAX(case DAYOFWEEK(`Login Date`) WHEN 1 then CONCAT(TimeIN,' - ',TimeOut) else '' End) as 'Mon', 
     MAX(case DAYOFWEEK(`Login Date`) WHEN 2 then CONCAT(TimeIN,' - ',TimeOut) else '' End) as 'Tue', 
     MAX(case DAYOFWEEK(`Login Date`) WHEN 3 then CONCAT(TimeIN,' - ',TimeOut) else '' End) as 'Wed', 
     MAX(case DAYOFWEEK(`Login Date`) WHEN 4 then CONCAT(TimeIN,' - ',TimeOut) else '' End) as 'Thu', 
     MAX(case DAYOFWEEK(`Login Date`) WHEN 5 then CONCAT(TimeIN,' - ',TimeOut) else '' End) as 'Fri', 
     MAX(case DAYOFWEEK(`Login Date`) WHEN 6 then CONCAT(TimeIN,' - ',TimeOut) else '' End) as 'Sat', 
     MAX(case DAYOFWEEK(`Login Date`) WHEN 7 then CONCAT(TimeIN,' - ',TimeOut) else '' End) as 'Sun' 
FROM login 
GROUP BY empID 

这是给你参考的小提琴 - http://www.sqlfiddle.com/#!9/437e5/5

+0

非常感谢你..这是解决我的问题...伟大的想法... – Elmer