如果结果的时间戳在另一个结果的特定范围内,我将如何排除查询结果?

时间:2015-10-28 00:22:21

标签: sql

我们说我有以下结果

Person   Action   Item    Time 
Jane     Ate      Apple   2015-10-27 18:52:22 
Jane     Ate      Apple   2015-10-27 18:53:18
Jane     Ate      Apple   2015-10-28 5:16:45

我想首先将两个Jane结果合并,只出现一次,因为它们发生在同一天......基本上是寻找每天的MAX时间,而不是一般的MAX时间。

2 个答案:

答案 0 :(得分:2)

使用row_number选择每人每天每件物品的最长时间:

select * from (
  select row_number() over (partition by person, action, item, CONVERT(date, time) order by time desc) rn, *
  from mytable
) t1 where rn = 1

答案 1 :(得分:2)

我认为你想要group by并使用max作为你的聚合函数。像这样:

select person, action, item, max(time)
from mytable
group by person, action, item, convert(date, time)