2016-08-18 5 views
1

Ich versuche eine Datenbank mit Patienteninformationen in einem Krankenhaus abzufragen. Sie enthält das Aufnahmedatum, das Entlassungsdatum, die eindeutige Kennung und die Station, in der sie sich befinden.Datenbank mit Aufnahme- und Entlassungsdaten

Hier einige Beispieldaten

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'); 

ich meine Abfrage wollen jeden Tag jeden Tag zurückgehen in einem Bereich und zählen, wie viele Patienten auf einer Station. Sie sind definiert als auf der Station zu sein, zwischen dem Aufnahmedatum und dem Entlassungstermin.

Die Ergebnisse sollten wie diese

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

sehe ich die Abfrage erhalten können die Werte für ein einzelnes Datum mit der folgenden Abfrage zurückzukehren. Aber ich muss das Datum in der Abfrage definieren.

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

Rückkehr Dieses Ergebnis

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

Aber was ich bin wirklich nach ist dies für einen Datumsbereich ausgeführt und die Ausgabe ist eine Liste von jedem Datum, mit einer Zahl von Patienten für jeden Tag.

+0

Erstellen Sie eine Datumstabelle und machen Sie ein JOIN am Datum BETWEEN admission_dt und dc_dt. Es gibt Unmengen von Möglichkeiten, eine Date-Tabelle on the fly zu erstellen, wenn Sie einen unteren und oberen Bereich haben, den Sie wollen. Wenn Sie Ihre spezifischen rdbms (mysql, sql-server, oracle) usw. taggen, können Ihnen die Leute besser helfen. – Matt

+0

Sie müssen die Anzahl der Patienten wissen, mit denen Sie beginnen. Zählen von Aufnahmen und Entlassungen wird Ihnen nur die Veränderung der Anzahl der Patienten auf der Station mitteilen. – david25272

Antwort

-1

Was Sie wirklich wollen, ist, den Datumsfilter in Ihre Gruppierungsklausel zu setzen. Ich bin gespannt, welche Daten Sie haben, die GT Jan02 und LT Jan03 sind? Scheint so, als ob die Ergebnismenge leer sein sollte.

Verwandte Themen