1

我有一个名为 Bed_registry 的表(用于医院数据库)

CREATE TABLE Bed_Registry (
 Visit_ID       CHAR(5) ,
 Bed_ID     CHAR(5) ,
 Admission_Date DATE        NOT NULL,
 Discharge_Date DATE,
 CONSTRAINT BR_PK PRIMARY KEY(Visit_ID, Bed_ID),
 CONSTRAINT BR_FK_visit
   FOREIGN KEY (Visit_ID)
   REFERENCES Visit (Visit_ID)
   ON DELETE CASCADE,
 CONSTRAINT BR_FK_bed
   FOREIGN KEY (Bed_ID)
   REFERENCES Bed (Bed_ID)
   ON DELETE CASCADE
);

我为这个表创建了一个 SQL 日历,我可以Bed_ID只将 放在日历上Admission_Date或中的一个上Discharge_Date。我想知道是否有任何方法Bed_id不仅可以显示其中一个日期,还可以显示介于Admission_Date和之间的所有日期Discharge_Date

非常感谢你!

4

1 回答 1

1

您需要创建一个查询,以在 Admission_date 和 Discharge_date 之间生成日期。然后,您可以根据此查询创建日历。

为此,您首先需要一个数字为 0...n 的表格,其中 n 大到足以涵盖医院的最大住院天数。

餐桌天数:

Day
0
1
2
3
4
...

然后您的查询将如下所示:

select Admission_date, Discharge_date, 
       Admission_date + days.day AS Occupied_date
from   beds, 
       (select days.day from days order by days.day) days
where  Admission_date + days.day <= Discharge_date
order by Admission_date, Occupied_date;

See sqlfiddle demo

于 2013-03-30T18:07:36.223 回答