我需要在start_date后的30天内统计记录吗?

时间:2015-02-06 20:44:57

标签: sql count sql-date-functions

我试图在每个记录的开始日期后30天内找到记录数

我有一张桌子:

Patid             Start_date
1234              1/1/2015
1234              1/10/2015
1234              1/30/2015
1234             2/19/2015
1234              3/5/2015
1234              3/6/2015
1234              3/7/2015 

我想写一个简单的SQL查询,它应该给我以下结果:

patid:            Start_Date       #of Records in Next 30 Days
1234              1/1/2015            2
1234              1/10/2015           2
1234              1/30/2015           1
1234              2/19/2015           3  
1234              3/5/2015            2
1234              3/6/2015            1
1234              3/7/2015            0

最诚挚的问候, 晴天

1 个答案:

答案 0 :(得分:1)

在通用SQL中,最简单的方法是使用相关子查询:

select t.*,
       (select count(*)
        from table t2
        where t2.patid = t.patid and
              t2.start_date > t.start_date and
              t2.start_date <= t.start_date + interval '30 days'
       ) as Next30Days
from table t;

这使用ANSI标准语法进行日期算术 - 这是违反行为中最常见的标准。每个数据库似乎都有自己的按摩日期规则。