Tsql 如何找出两行中日期的差异
在下面的数据中,resno是居民编号。我试图找到在顶行有“R”的居民的计数(当数据按“Sort”desc排序时),第1行和第2行中的日期之间的差值为30天Tsql 如何找出两行中日期的差异,tsql,Tsql,在下面的数据中,resno是居民编号。我试图找到在顶行有“R”的居民的计数(当数据按“Sort”desc排序时),第1行和第2行中的日期之间的差值为30天 cono resno date seq sort admit_disch 140 9423 2013-12-12 00:00:00.000 255003 255003 R 140 9423 2013-11-17
cono resno date seq sort admit_disch
140 9423 2013-12-12 00:00:00.000 255003 255003 R
140 9423 2013-11-17 00:00:00.000 255002 255002 D
140 9423 2013-11-12 00:00:00.000 255001 255001 R
140 9423 2011-06-06 00:00:00.000 255000 255000 D
140 9423 2011-05-18 00:00:00.000 254999 254999 A
140 9604 2012-02-20 00:00:00.000 255548 255548 A
我能够编写一个查询来获取“R”居民,但不确定如何检查两行上的日期。在上述数据中,必须检查2013-12-12日期是否比2013-11-17日期大30天或更长
select cono,COUNT(resno) from
(
select ROW_NUMBER() over(partition by resno rsa.sort desc) rn,*
from ri_status_admit rsa
)B
where B.rn = 1
and B.admit_disch = 'R'
group by cono,resno
未经测试
我怀疑有一些语法错误,但这是最基本的想法
with sorted as
(
select ROW_NUMBER() over(partition by resno rsa.sort desc) rn,*
from ri_status_admit rsa
)
select s1.resno
from sorted s1
join sorted s2
on s1.rn = 1
and s1.admit_disch = 'R'
and s2.rn = 2
and datediff(dd,r1.date, r2.date) > 30