CREATE  TABLE  "PunchIn"  ( "id"  INT  NOT  NULL , "emp_code"  VARCHAR ( 50 )  NOT  NULL  COLLATE  'Chinese_PRC_CI_AS' , "punch_in_time"  DATETIME  NOT  NULL , "status"  VARCHAR ( 10 )  NOT  NULL  COLLATE  'Chinese_PRC_CI_AS' , PRIMARY  KEY  ( "id" ) 
) 
; CREATE  TABLE  "PunchOut"  ( "id"  INT  NOT  NULL , "emp_code"  VARCHAR ( 50 )  NOT  NULL  COLLATE  'Chinese_PRC_CI_AS' , "punch_out_time"  DATETIME  NOT  NULL , "status"  VARCHAR ( 10 )  NOT  NULL  COLLATE  'Chinese_PRC_CI_AS' , PRIMARY  KEY  ( "id" ) 
) 
; CREATE  TABLE  "Employee"  ( "id"  INT  NOT  NULL , "emp_code"  VARCHAR ( 50 )  NOT  NULL  COLLATE  'Chinese_PRC_CI_AS' , "username"  VARCHAR ( 50 )  NOT  NULL  COLLATE  'Chinese_PRC_CI_AS' , "password"  VARCHAR ( 50 )  NOT  NULL  COLLATE  'Chinese_PRC_CI_AS' , PRIMARY  KEY  ( "id" ) 
) 
; SELECT  *  FROM  ( 
SELECT  a. id, a1. emp_code AS  工号,  a1. username AS  用户名, CONVERT ( VARCHAR ( 19 ) ,  a. punch_in_time,  120 )  AS  上班打卡时间,  a. status  AS  上班打卡状态, CONVERT ( VARCHAR ( 19 ) ,  b. punch_out_time,  120 )  AS  下班打卡时间,  b. status  AS  下班打卡状态
FROM  Employee a1 
LEFT  JOIN  PunchIn a 
ON  a1. emp_code =  a. emp_code
LEFT  JOIN  PunchOut b 
ON  a. emp_code =  b. emp_code AND  CONVERT ( DATE ,  a. punch_in_time)  =  CONVERT ( DATE ,  b. punch_out_time) AND  b. id =  ( SELECT  MAX ( id) FROM  PunchOutWHERE  emp_code =  a. emp_code AND  CONVERT ( DATE ,  punch_out_time)  =  CONVERT ( DATE ,  a. punch_in_time) ) 
ORDER  BY  a. emp_code,  a. punch_in_time
)  main WHERE  下班打卡时间 IS  NULL ;