27,579
社区成员
发帖
与我相关
我的任务
分享
select a.dt,a.name,max(convert(varchar(5),b.checktime,108))maxtime,min(convert(varchar(5),b.checktime,108))mintime
from (
select distinct convert(varchar(10),a.checktime,120)dt,b.userid,b.name from checkinout a,userinfo b
)a left join checkinout b on a.dt=convert(varchar(10),b.checktime,120) and a.userid=b.userid
group by a.dt,a.name
order by 1
/*
dt name maxtime mintime
---------- ---------- ------- -------
2011-11-01 黄七 17:32 08:26
2011-11-01 李三 NULL NULL
2011-11-01 林八 NULL NULL
2011-11-01 蔺十 NULL NULL
2011-11-01 刘一 17:33 08:25
2011-11-01 王五 17:32 08:25
2011-11-01 徐四 19:50 08:26
2011-11-01 易九 NULL NULL
2011-11-01 周二 17:42 08:31
2011-11-01 邹六 NULL NULL
2011-11-02 黄七 19:49 08:26
2011-11-02 李三 17:48 13:57
2011-11-02 林八 08:28 08:28
2011-11-02 蔺十 NULL NULL
2011-11-02 刘一 NULL NULL
2011-11-02 王五 17:30 08:26
2011-11-02 徐四 18:51 08:26
2011-11-02 易九 NULL NULL
2011-11-02 周二 NULL NULL
2011-11-02 邹六 18:34 08:27
2011-11-03 黄七 17:38 08:28
2011-11-03 李三 18:47 08:27
2011-11-03 林八 17:31 08:24
2011-11-03 蔺十 NULL NULL
2011-11-03 刘一 NULL NULL
2011-11-03 王五 NULL NULL
2011-11-03 徐四 17:36 08:10
2011-11-03 易九 NULL NULL
2011-11-03 周二 NULL NULL
2011-11-03 邹六 NULL NULL
警告: 聚合或其他 SET 操作消除了空值。
(30 行受影响)
*/
declare @tyear as int,@tmonth as int
set @tyear=2011
set @tmonth=10
select
mydate,
u.userid,u.name,
mintime,
maxtime
from
userinfo as u ,
(
select
userid,
convert(varchar(10), c.checktime, 120) as mydate,
convert(varchar(5), min(checktime), 108) mintime,
convert(varchar(5), max(checktime), 108) maxtime
from
checkinout
where
checktime between '2011-11-01' and '2011-11-30'
GROUP BY userid
)T
where T.userid=u.userid
order by mydate