数据库考勤表有两个字段,员工id和员工name,查询出某一天第一个签到的人
之前面试的时候碰到的问题:数据库考勤表有两个字段,员工id和员工name,查询出某一天第一个签到的人,请写出插入和查询语句,没有时间字段
当时我直接懵逼,又问了一句-----没有时间字段???? 没有
然后我:不会
这几天我又想到了这个问题 ,然后想出来了个方法。
方法大致描述:在员工name 字段给每天第一个人加一个年月日的时间标签。然后每次插入时候遍历一遍看是否有这个时间标签,没有的话插入的时候就加上这个时间标签,然后查询的时候根据时间标签模糊查询结果,再对结果字符串处理一下就可以了。
数据库代码如下:
我能想到的最好的办法,有更好的请留言交流
create proc insertproc @id int,@name nvarchar(50) ----存储过程插入
as begin
declare @index nvarchar(50)
declare @Pdate nvarchar(50)
set @Pdate=convert(nvarchar(12),GETDATE(),12)
select @index=name from Attendance where name like '%'+@Pdate
select @name=case when @index is null then @name+@Pdate else @name end
insert into Attendance(id,name) values(@id,@name)
endexec insertproc 101,'大龙' exec insertproc 102,'小龙'----查询语句
select id,REPLACE(name,convert(nvarchar(12),GETDATE(),12),'')as name from Attendance where name like '%'+convert(nvarchar(12),GETDATE(),12)
发布评论