我创建一个出勤表。我完全插入了数据成功,但是从出勤表中获取数据时,数据没有显示出我的需求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
当人外出时间未进入time_out
栏中显示的时间范围时
我想显示null
列而不是相同的重复时间。
我想要这个结果。
答案 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