我用这种结构创建表 Appointments:
CREATE TABLE Appointments
(
[Id] bigint,
[Name] varchar(250),
[DateInit] date
);
INSERT INTO Appointments ([Id], [Name], [DateInit])
values
(1000, 'Lorena', '03/06/2016'),
(1000, 'Lorena', '01/06/2016'),
(1000, 'Lorena', '08/06/2016'),
(1000, 'Lorena', '10/06/2016'),
(1000, 'Lorena', '02/06/2016'),
(1000, 'Lorena', '20/06/2016'),
(7000, 'Susan', '04/06/2016'),
(7000, 'Susan', '08/06/2016'),
(7000, 'Susan', '09/06/2016'),
(7000, 'Susan', '01/06/2016');
这是最终结果:
我需要获取第二天和前一天的结果,例如,如果今天是“03/06/2016”,我需要获取从今天开始插入表中的最后一个约会和插入的下一个约会的结果在今天的表格中,我需要的结果是这样的:
Name Last Visit Next Visit
----- ---------- -----------
Lorena 2016-06-02 2016-06-08
Susan 2016-06-01 2016-06-04
我怎样才能得到这个结果? 谢谢
最佳答案
执行 GROUP BY
,使用 case
表达式来选择最大的先前约会和最小的 future 约会:
select name,
max(case when DateInit < CONVERT(DATE,GETDATE()) then DateInit end) as LastVisit,
min(case when DateInit > CONVERT(DATE,GETDATE()) then DateInit end) as NextVisit
from Appointments
group by name
关于sql - 如何从一个日期获取下一个记录日期和从一个日期获取最后一个记录日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37610924/