我们是打饭记录,比如中午吃饭的时间是12:00-13:00 , 这段时间打卡记录每个人只取一次,怎么做?

ballatong 2015-10-12 02:38:31
我们是打饭记录,比如中午吃饭的时间是12:00-13:00 , 这段时间打卡记录每个人只取一次,怎么做?

表项目如下,username为关键字段

...全文
279 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ny-6000 2015-10-13
  • 打赏
  • 举报
回复
每个人只取一次

取第一次 ,还是取后一次

其实用个min,或max语法就实现了.

再加个datediff()条件比较时间小时数....
u01287562628 2015-10-12
  • 打赏
  • 举报
回复
使用分析函数 或 max ( min) 进行关联查询。
山那頭 2015-10-12
  • 打赏
  • 举报
回复
硬件设法考虑下,份饭机打卡没有控制重复打卡无效的吗?
spiritofdragon 2015-10-12
  • 打赏
  • 举报
回复
对于写partition by username order by [date], [time] desc的写法,我只想说没有产品思想的程序员太耽误事。
with t as
(
select ROW_NUMBER() OVER(partition by username, [date] order by [time] ) rn, *
from 打饭记录
where DATEPART(HOUR, [time])=12
)
select * from t where rn = 1
刘牧之 2015-10-12
  • 打赏
  • 举报
回复
select * from 打饭记录表
where DATEPART(hour, Time) between '12' and '13'
道玄希言 2015-10-12
  • 打赏
  • 举报
回复
纪录字段多,可以这么做。

; with tbl as
(
select ROW_NUMBER() OVER(partition by username order by [date], [time] desc) as noid, *
from 打饭记录表
where DATEPART(HOUR, [time]) between '12' and '13'
)
select * from tbl where noid = 1
道玄希言 2015-10-12
  • 打赏
  • 举报
回复
select * from 打饭记录表
where DATEPART(HOUR, [time]) between '12' and '13'
道玄希言 2015-10-12
  • 打赏
  • 举报
回复
select * from 打饭记录表
where convert(varchar(2),[time],114) between '12' and '13'
dzxccsu 2015-10-12
  • 打赏
  • 举报
回复
MAX 或min
where time >=12:00 and time <=13:00

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧