2017-08-16 134 views
0

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

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

非常感谢您的帮助!

表结构:

Table Structure

所需的结果:

Desired Result

+0

具有扩展的数据样本为.csv在这里添加[链接](https://www.dropbox.com/s/ajnifyt76ca9ifg/Sample.csv?dl=0) –

回答

1

可以如下查询:

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

它始终是更好地提供数据和文本,以便我们可以检查数据...

你可以使用上面(1)的关系以及

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

'desc'?你的意思是'asc'? “...是给定sa_person当天的***第一个***活动...” – xQbert

+0

是的,第一个[时间]条目我删除了那个desc ...谢谢 –

+0

感谢您的快速回复。我已经以csv格式添加了上面的链接和扩展数据。 –