如何提取具有最低时间值的多行中的第一条记录。如何获取MSSQL中每个重复行只有一条记录
是这样的:
PersNr | Name | Day | From | To | TaskNr
------------------------------------------------
1000 Peter 2017-10-16 25050 -2 110
1001 Emily 2017-10-16 25038 -2 110
1010 Greg 2017-10-16 28306 31371 120
1010 Greg 2017-10-16 31371 -2 150
1012 Jon 2017-10-16 24805 26716 170
1012 Jon 2017-10-16 26716 29227 110
1012 Jon 2017-10-16 29227 -2 150
我需要唯一的名称和他们什么时候开始工作(从最低值)上的任务。
应该是这样的:
PersNr | Name | Day | From | To | TaskNr
------------------------------------------------
1000 Peter 2017-10-16 25050 -2 110
1001 Emily 2017-10-16 25038 -2 110
1010 Greg 2017-10-16 28306 31371 120
1012 Jon 2017-10-16 24805 26716 170
我创建的表是这样的:
SELECT AB.PersNr
,P.Name AS name
,CONVERT(char(10),DATEADD(DAY, AB.Tag, '30.12.1899'),126) AS Day
,AB.From
,AB.To
,AB.TaskNr
FROM AStpFromTo AB
LEFT JOIN Tasks A ON (A.TaskNr = AB.TaskNr)
INNER JOIN Person P ON (P.PersNr = AB.PersNr)
WHERE P.Department = 170 AND AB.Day = DATEDIFF(DAY, '30.12.1899', GETDATE())
结果乔恩是不正确的,按照什么OP希望。 –
@PrabhatG - 谢谢,现在修复 – 2017-10-16 10:41:46