两个日期之间每个日期的sql行

mspsb9vt  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(421)

我使用的是SQLServerManagementStudio 18,我试图为两个日期之间的每个日期返回一行。这是一份床位普查报告,要求如下。
所有午夜23:59在床上的病人。如果一个人在2016-07-08入院,2016-07-11出院,这将有3排。输出这样的东西

Epidsode date ,admitted date, discharged date, Ward
2016-07-08  2016-07-08   2016-07-11  Ward a
2016-07-09  2016-07-08   2016-07-11  Ward a
2016-07-10  2016-07-08   2016-07-11  Ward b

另外,如果有人在同一天入院和出院,那么这将显示一排。
这样做可能吗?
我尝试过搜索其他主题,但找不到确切的帮助任何帮助将是巨大的

q1qsirdb

q1qsirdb1#

可以使用递归cte:

with cte as (
      select admitted_date as episode_date, admitted_date, discharge_date, ward
      from t
      union all
      select dateadd(day, 1, episode_date), admitted_date, discharge_date, ward
      from cte
       where episode_date < dateadd(day, -1, discharge_date)
    )
select *
from cte
with option (maxrecursion 0);

注意:如果超过100天,您需要 option (maxrecursion 0) .
这是一把小提琴。

相关问题