入学和出院日期的数据库

时间:2016-08-18 23:19:09

标签: sql sql-server-2008 tsql

我正在尝试查询医院的患者信息数据库。它包含他们的入学日期,出院日期,唯一标识符和他们所在的病房。

以下是一些示例数据

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 |  |
+-------+---------------+--+

但我真正追求的是在日期范围内运行它,输出是每个日期的列表,每天都有患者数。

1 个答案:

答案 0 :(得分:-1)

您真正想要的是将日期过滤器放在分组子句中。我很好奇你有什么日期是GT Jan02和LT Jan03?好像结果集应该是空的。