Esr*_*_92 2 sql sql-server date
我使用这种结构创建表约会:
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');
Run Code Online (Sandbox Code Playgroud)
这是最终结果:
我需要得到第二天和前一天的结果,例如,如果今天是'03/06/2016'我需要从今天开始在表格中插入最后一个约会的结果,并在表格中插入下一个约会从今天起,我需要的结果是这样的:
Name Last Visit Next Visit
----- ---------- -----------
Lorena 2016-06-02 2016-06-08
Susan 2016-06-01 2016-06-04
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这个结果?谢谢
做一个GROUP BY,使用case表达式选择最大的前一个约会,并将未来的约会分开:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |