如何通过mysql查询从考勤表中获取考勤报告?

时间:2018-11-13 06:23:04

标签: mysql sql

我创建一个出勤表。我完全插入了数据成功,但是从出勤表中获取数据时,数据没有显示出我的需求attendance table

in_out列保留输入和输出时间的参考。值“ 1”表示输入时间,值“ 2”表示输出时间。 这是我的查询。

SELECT t.person_id, 
       t.date, 
       Substring_index(t.in_out, '#', 1)                           am_in, 
       Substring_index(Substring_index(t.in_out, '#', 2), '#', -1) am_out 
FROM   (SELECT h.person_id, 
               h.date, 
               Group_concat(h.timedata ORDER BY h.in_out SEPARATOR '#') in_out 
        FROM   attendances h 
        GROUP  BY h.person_id, 
                  h.date) t 

Query result

当人外出时间未进入time_out栏中显示的时间范围时 我想显示null列而不是相同的重复时间。

我想要这个结果。

Required Result

1 个答案:

答案 0 :(得分:0)

您可以尝试使用CASE WHEN表达式

select t.person_id,t.date,
substring_index(t.in_out,'#',1) am_in, 
case when substring_index(t.in_out,'#',1)=substring_index(substring_index(t.in_out,'#',2),'#',-1) then 'Can not scan' else substring_index(substring_index(t.in_out,'#',2),'#',-1) end as am_out
from 
(
select h.person_id,h.date,group_concat(h.timedata order by h.in_out separator '#') in_out from attendances h group by h.person_id,h.date 
) t