一个mssql的查询问题
数据库的表是这样子的:
--签到/签退记录表
CREATE TABLE CHECKINOUT (
USERID INT NOT NULL , --员工ID号
CHECKTIME DATETIME NOT NULL DEFAULT GETDATE(), --签到/签退时间
CHECKTYPE VARCHAR (1) NULL DEFAULT 'I', --签到/签退标志:I-签到,O-签退
VERIFYCODE INT NULL DEFAULT 0, --验证方式:除256的余数表示签到的方式: 0-密码;1-指纹;2-卡。大于256表示该记录已经被确认,在于处理时不进行处理
SENSORID VARCHAR (5) NULL, --采集数据的考勤终端/设备ID
CONSTRAINT USERCHECKTIME PRIMARY KEY (USERID, CHECKTIME)
)
-- id相等
-- table1.checktype='I' table2.checktype='O'
-- date匹配同一天
select cio1.userid,cio1.checktime,cio2.checktime
from checkinout cio1,checkinout cio2
where cio1.userid = cio2.userid
and cio1.checktype='I'
and cio2.checktype='O'
and --该如何进行日期的匹配呢?
-- id相等
-- table1.checktype='I' table2.checktype='O'
-- date匹配同一天
select cio1.userid,cio1.checktime,cio2.checktime
from checkinout cio1,checkinout cio2
where cio1.userid = cio2.userid
and cio1.checktype='I'
and cio2.checktype='O'
and year(cio1.DATETIME) = year(cio2.DATETIME)
and month(cio1.DATETIME) = month(cio2.DATETIME)
and day(cio1.DATETIME) = day(cio2.DATETIME)