日期:2014-05-18  浏览次数:20531 次

继续实际问题的提问(打卡问题)
我的数据是每天上班出入时的打卡记录,
 
工号             打卡日期

001               2006.09.09
002               2006.09.03
.
.
.
我想查找出2006.09.01到2006.12.31日之间有哪个人缺勤,就是说有哪个人在数据库中缺一个具体日期的值,就是说,如果工号为001的人2006.09.09一天都没有数据的话,他就是那天缺勤,我想打出的是

如果一个人某一天缺勤的话,查找出工号,缺勤日期,并显示状态为缺勤,请问怎么实现?急,在线等。

------解决方案--------------------
举一个例子
create table ta([date] datetime, [count] int)
insert ta select '2007-1-1 ', 1
union all select '2007-1-2 ', 2
union all select '2007-1-4 ', 3


declare @start datetime,@end datetime
select @start=min(date) from ta
select @end=max(date) from ta
declare @tmp table(date varchar(10))
while convert(varchar(10),@start,120)!> convert(varchar(10),@end,120)
begin
insert @tmp select convert(varchar(10),@start,120)
set @start=@start+1
end
select tb.date,[count]=isnull(count,0)
from @tmp tb left join ta on tb.date=convert(varchar(10),ta.date,120)