2016-08-18 95 views
1

我想查询病人信息在医院的数据库。它包含他们的入学日期,出院日期,唯一标识符以及他们所在的病房。数据库与入院和出院日期

下面是一些样本数据

CREATE TABLE mytable 
(
    Identifier INTEGER NOT NULL PRIMARY KEY, 
    admission_Dt DATE NOT NULL, 
    DC_dt DATE NOT NULL, 
    Ward DATE NOT NULL 
); 

INSERT INTO mytable(Identifier, admission_Dt, DC_dt, Ward) 
VALUES (1, '1/01/2016', '6/01/2016', 'Med 1'); 

INSERT INTO mytable(Identifier, admission_Dt, DC_dt, Ward) 
VALUES (2, '3/01/2016', '4/01/2016', 'Med 1'); 

INSERT INTO mytable(Identifier, admission_Dt, DC_dt, Ward) 
VALUES (3, '4/01/2016', '7/01/2016', 'Sur 1'); 

INSERT INTO mytable(Identifier, admission_Dt, DC_dt, Ward) 
VALUES (4, '2/01/2016', '5/01/2016', 'Sur 1'); 

INSERT INTO mytable(Identifier, admission_Dt, DC_dt, Ward) 
VALUES (5, '2/01/2016', '3/01/2016', 'Med 1'); 

INSERT INTO mytable(Identifier, admission_Dt, DC_dt, Ward) 
VALUES (6, '5/01/2016', '6/01/2016', 'Sur 1'); 

我希望我的查询每天的范围和数量的每一天有多少患者在病房返回结果。他们被定义为在入院日期和出院日期之间的当天处于病房。

结果应该是这样的

+------------+-------+---------------+--+ 
| Date  | Ward | Patient count | | 
+------------+-------+---------------+--+ 
| 1/01/2016 | Med 1 |    1 | | 
| 2/01/2016 | Med 1 |    2 | | 
| 2/01/2016 | Sur 1 |    1 | | 
| 3/01/2016 | Med 1 |    2 | | 
| 3/01/2016 | Sur 1 |    1 | | 
| 4/01/2016 | Med 1 |    1 | | 
| 4/01/2016 | Sur 1 |    2 | | 
| 5/01/2016 | Med 1 |    1 | | 
| 5/01/2016 | Sur 1 |    2 | | 
+------------+-------+---------------+--+ 

我可以查询到在同一个日期用下面的查询返回的值。但是我必须在查询中定义日期。

select count(identifier), Ward 
from my_table 
where admission_Dt > 20160102 and DC_dt< 20160103 
group by Ward 

返回此结果

+-------+---------------+--+ 
| Ward | Patient_count | | 
+-------+---------------+--+ 
| Med 1 |    2 | | 
| Sur 1 |    1 | | 
+-------+---------------+--+ 

但是我真的很追求的是一个日期范围运行此,输出是每个日期的名单,与患者每一天的计数。

+0

生成一个日期表,并在admission_dt和dc_dt之间的日期间执行JOIN。如果你有一个较低和较高的范围,有很多方法可以即时创建日期表。如果您标记特定的rdbms(mysql,sql-server,oracle)等,人们将能够更好地为您提供帮助。 – Matt

+0

您需要知道您开始接受治疗的患者人数。计算入院和出院只会告诉你病房病人数量的变化。 – david25272

回答

-1

你真正想要的是将日期过滤器放在分组子句中。我很好奇你的日期是GT Jan02还是LT Jan03?看起来像那个结果集应该是空的。