计算SQL Server中缺少学生

时间:2016-12-03 15:32:01

标签: c# sql sql-server database

我正在更新学校申请表,其中我想根据他们的身份证和选定的时间段来计算任何学生的缺席。我在Sql Server中有一个名为CHECKINOUT的表,用于保存学生的数据。现在我想计算没有学生。当有人进入学校时,在这个表格中输入以下字段

 [USERID]
  ,[CHECKTIME]
  ,[CHECKTYPE]

enter image description here 这是CHECKINOUT表中的数据截图

现在说我有身份证10,我想在上个月计算缺席的学生,我对查询感到困惑。请帮帮我

1 个答案:

答案 0 :(得分:0)

正在研究它,不确定这是否最简单,但它确实有效,我已经对它进行了测试。

select missDates.userid, checkinout.userid, dt from
checkinout right join  
(select * from (
    SELECT  DATEADD(DAY, nbr - 1, @StartDate) dt
      FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY c.object_id ) AS Nbr
                  FROM      sys.columns c
              ) nbrs
     WHERE   nbr - 1 <= DATEDIFF(DAY, @StartDate, @EndDate)) alldates 
     cross join (select distinct userid from checkinout) t2) missDates
         on missdates.userid = checkinout.userid 
         and convert(date,checktime) = convert(date,dt)
 where  checkinout.userid is null