这是我的第一个问题,我没有找到解决问题的答案,所以我决定开一个新问题。
我正在使用桌子" Access"从excel文件导入,因此没有主键,如下所示:
ID | Enter_date | Exit_date
10 | 08/06/2015 | 08/06/2015
11 | 08/06/2015 | 09/06/2015
12 | 08/06/2015 | 09/06/2015
10 | 18/06/2015 | 30/06/2015
10 | 02/07/2015 | 03/07/2015
11 | 12/06/2015 | 14/06/2015
12 | 10/06/2015 | 14/06/2015
12 | 02/07/2015 | 03/07/2015
所以,我试图创建一个查询来选择表格和最后一个寄存器上id的第一个寄存器,忽略中间寄存器,以便更好地解释我期待这个结果:
ID | Enter_date | Exit_date
10 | 08/06/2015 | 08/06/2015
10 | 02/07/2015 | 03/07/2015
11 | 08/06/2015 | 09/06/2015
11 | 12/06/2015 | 14/06/2015
12 | 08/06/2015 | 09/06/2015
12 | 02/07/2015 | 03/07/2015
我启动了一个代码,我可以得到第一个寄存器,但问题是最后一个= /因为一些ID还有3个其他2行:
SELECT k.ID, k.Enter_date, k.Exit_date
FROM
(SELECT ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) AS RowNo,
ID, Enter_date, Exit_date FROM Access)k
WHERE k.RowNo=1
答案 0 :(得分:0)
假设Enter_date& Exit_date不重叠,以下应该有效。警告,航空代码。
SELECT ID, Min(Enter_date) as EnterDate, Max(Exit_date) as ExitDate FROM tblRegisters Group By ID
UNION
SELECT ID, MAX(Enter_date) as ExitDate, Max(Exit_date) as ExitDate FROM tblRegisters Group By ID