【问题标题】:SQL SELECT the rows with the first activity of each day for each person using timeSQL SELECT 使用时间的每个人每天的第一个活动的行
【发布时间】:2018-01-24 19:50:28
【问题描述】:

我有一个表,其中包含多个员工的定时活动数据。从这个表中,我只需要使用 [day] (date) 和 [time] 列为给定的 sa_person 选择活动是当天第一个活动的行。 [活动 ID] 列对于事件的顺序不可靠,因为某些日期/时间是手动输入的。

以下是起始表格和预期结果的图像。

提前感谢您的帮助!

表结构:

期望的结果:

【问题讨论】:

  • 一个带有扩展数据样本的 .csv link

标签: sql sql-server date select time


【解决方案1】:

您可以如下查询:

Select * from (
   Select *, RowN = Row_Number() over (partition by saperson, [Day] order by [time] asc) from yourtable ) a
Where a.RowN = 1

提供带有文本的数据总是更好,这样我们就可以检查数据...

您也可以将 top (1) 与领带一起使用

Select top(1) with ties * from yourtable
Order by Row_Number() over (partition by saperson, [Day] order by [time])

【讨论】:

  • desc?你的意思是asc? "...是给定 sa_person 当天的第一个活动..."
  • 是的,第一个 [time] 条目我删除了该描述...谢谢
  • 感谢您的快速回复。我在上面添加了一个链接,其中包含 csv 格式的扩展数据。
猜你喜欢
  • 1970-01-01
  • 2020-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-25
  • 1970-01-01
  • 2022-01-18
相关资源
最近更新 更多