2016-04-20 54 views
-1

在SQL中,我試圖找到目前在我們的急診部門中的患者人數。這裏是我的查詢到目前爲止:如何統計每小時的記錄數量?

SELECT CAST(dt_ARRIVAL AS DATE) [Date], 
DATEPART(HOUR,dt_ARRIVAL) [Hour], Count(1) [Patients] 
FROM [Hospital].[dbo].[DATA_DUMP] 
WHERE dt_ARRIVAL >= '2016-04-15' 
GROUP BY CAST(dt_ARRIVAL AS DATE), DATEPART(HOUR,dt_ARRIVAL) 
ORDER BY 1 ,2 

它給我的那個初來乍到時患者的數量如下所示:

Date Hour Patients 
4/15/16 2  2 
4/15/16 4  1 
4/15/16 6  1 
4/15/16 7  5 
4/15/16 8  2 

這並不佔所有病人一樣,那些是在牀上或在候診室裏。我以爲我可以使用一個名爲dt_departure的「離開」時間戳來計算這個,但那是我卡住的地方。任何幫助是極大的讚賞。

下面是從我擦洗患者標識符表中的一些數據:

dt_ARRIVAL  dt_DEPARTURE s_OUTCOME_LOCATION _OUTCOME_ID 
4/20/2016 4:49 4/20/2016 5:24 D:Home/Self Care   2 
4/20/2016 5:49 4/20/2016 9:30 H:Med-Surg 2, CPH213-1  1 
4/20/2016 7:01 4/20/2016 11:10 H:Observation, OBS250-3  1 
4/20/2016 7:34 NULL   NULL      NULL 
+0

您需要向我們展示一些示例數據。同時請確保它被清理或模擬數據。我們不知道您在表格中捕獲了什麼 – TheNorthWes

+0

我在原始文章中添加了一些數據的鏈接。 –

+0

你可以在這裏發佈這個擦洗過的樣品嗎?鏈接到文件共享時代,並且對於未來的答案搜索者將無法使用。 – TheNorthWes

回答

0

沒有看到你的數據結構是有點辛苦,但

SELECT CAST(dt_ARRIVAL AS DATE) [Date], 
DATEPART(HOUR,dt_ARRIVAL) [Hour], Count(1) [Patients] 
FROM [Hospital].[dbo].[DATA_DUMP] 
WHERE dt_ARRIVAL >= '2016-04-15' AND dt_DEPART='' 
GROUP BY CAST(dt_ARRIVAL AS DATE), DATEPART(HOUR,dt_ARRIVAL) 
ORDER BY 1 ,2 

我在這裏的假設是什麼如dt_DEPART=''將排除退出的患者。

0
SELECT CAST(dt_ARRIVAL AS DATE) [Date] 
    , DATEPART(HOUR,dt_ARRIVAL) [Hour], Count(1) [Patients] 
FROM [Hospital].[dbo].[DATA_DUMP] 
WHERE dt_ARRIVAL >= '2016-04-15' 
GROUP BY CAST(dt_ARRIVAL AS DATE), DATEPART(HOUR,dt_ARRIVAL) 
union all 
select cast('1900-01-01' as date), 0, count(*) 
FROM [Hospital].[dbo].[DATA_DUMP] 
WHERE dt_ARRIVAL is null 
ORDER BY 1 ,2; 

但我很驚訝,你可以有別人沒有的dt_ARRIVAL
輸入某人如何能在沒有一個dt_ARRIVAL一張牀?
似乎應該是必填字段

+0

總是有一個dt_ARRIVAL,我會嘗試併發布一些數據。 –

+0

然後你的問題就沒有意義了。如果該專欄有(有效)數據,它如何錯過等待或臥牀的人? – Paparazzi

+0

因爲我的查詢只計算當時到達急診部的病人數目。 –

相關問題