id patient_date
1 10/5/2017
2 6/6/2017
3 6/10/2017
4 8/7/2017
5 9/19/2017
输出:
id patient_date days
1 10/5/2017 (6/6/2017-10/5/2017)
2 6/6/2017 (6/10/2017-6/6/2017)
3 6/10/2017 (8/7/2017-6/10/2017)
4 8/7/2017 (9/19/2017-8/7/2017)
5 9/19/2017
答案 0 :(得分:1)
此处带有额外列的查询供您选择:)
{{1}}
答案 1 :(得分:0)
你可以试试这个。这将使用lead来查找您的下一个值。最后一个值应为null或无,根据需要进行更正。 1900-01-01的日期应更改为您希望的愿望。它也可以是NULL值。然后它不会计算最后一行。
DECLARE @table TABLE (ID int,Patient_date date)
INSERT INTO @table VALUES
(1, '10/5/2017'),
(2,'6/6/2017'),
(3,'6/10/2017'),
(4,'8/7/2017'),
(5,'9/19/2017')
select *,DATEDIFF(DD,Patient_date,NextDate) as DaysBetween,
'('+cast(Patient_date as varchar(50)) + ' - ' + cast(NextDate as
varchar(50))+')' as DayString from (
select *,LEAD(Patient_date,1,'1900-01-01') over(order by ID ) as NextDate
from @table
) x
在我的结果中,我使用的是NULL而不是1900-01-01 - 另请注意我使用的是另一种日期格式,但它不应该是一个问题。
<强>结果:强>