在某些记录范围的N天内选择行

时间:2013-07-22 12:07:05

标签: sql oracle11gr2

我需要获取某个过程后20天范围内的记录。

表格medical包含如下所示的数据:

以下是SQLFIDDLE:

enter image description here

规则是:如果群组是A3,那么20天内(to the same patient in the same hospital)内的所有操作都是免费的。

因此,在2013年2月9日之前的所有操作都应该是免费的。 (2013年1月20日+20天)

问题:如何在应用A3组过程后的20天内检索所有记录?

1 个答案:

答案 0 :(得分:1)

我冒昧地更改了dat的数据类型,并将组的名称更改为groupe。

WITH modified_medical
     AS (SELECT hospital, pid, dat
           FROM medical
          WHERE groupe = 'A3')
  SELECT *
    FROM medical a, modified_medical b
   WHERE     b.hospital = a.hospital
         AND b.pid = a.pid
         AND a.dat BETWEEN b.dat AND b.dat + 20
ORDER BY a.hospital, a.pid, a.dat;

示例小提琴here