我有這段代碼來計算每小時事件的發生次數。我設置它來計算locate_received_date爲2016-12-01(注意:locate_received_date數據類型爲DATETIME,帶有YYYY-MM-DD hh:mm:ss格式)的所有小時的計數。我手動輸入日期以計算前一天。代碼摘錄如下:統計所有日期(不是特定日期)的事件
SELECT CAST(locate_received_date as date) AS 'ForDate',
DATEPART(hh, locate_received_date) AS 'OnHour',
COUNT (*) AS 'HourCount'
FROM MyTable
WHERE locate_received_date BETWEEN '2016-12-01 00:00:00.000' AND '2016-12-01 23:59:59.999'
GROUP BY CAST(locate_received_date as date), DATEPART(hh, locate_received_date);
現在,表「MyTable」在許多不同的日期有數百行數據的數據。我需要爲所有不同的日期運行計數,而不只是手動輸入特定的日期。我想我可以不知何故嵌套以下內容:
DISTINCT CAST(locate_received_date AS DATE)
或者也許這樣做使用某種FOR循環?編輯: 這是創建表的腳本。真的沒有任何其他列值得創建。表中沒有ID或任何東西。該表正在更新,並且每次有更新時,locate_received_date都將隨着發生的日期和時間而更新。我需要首先根據小時數(我的腳本所做的)來計算,並且還基於幾天。
CREATE Table myTable(
Locate_Received_Date date);
INSERT INTO myTable(Locate_Received_Date) VALUES ('2016-12-01 15:14:07.000');
INSERT INTO myTable(Locate_Received_Date) VALUES ('2016-12-01 15:13:37.000');
INSERT INTO myTable(Locate_Received_Date) VALUES ('2016-12-02 15:13:37.000');
INSERT INTO myTable(Locate_Received_Date) VALUES ('2016-12-01 15:13:07.000');
INSERT INTO myTable(Locate_Received_Date) VALUES ('2016-12-02 15:12:08.000');
INSERT INTO myTable(Locate_Received_Date) VALUES ('2016-12-02 15:12:07.000');
INSERT INTO myTable(Locate_Received_Date) VALUES ('2016-11-28 15:11:37.000');
INSERT INTO myTable(Locate_Received_Date) VALUES ('2016-12-02 15:11:08.000');
INSERT INTO myTable(Locate_Received_Date) VALUES ('2016-12-02 15:11:07.000');
INSERT INTO myTable(Locate_Received_Date) VALUES ('2016-11-28 15:10:37.000');
INSERT INTO myTable(Locate_Received_Date) VALUES ('2016-11-29 15:10:08.000');
任何幫助將不勝感激。謝謝
這是一個很好的開始。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –
我不確定爲什麼您發佈的查詢不適用於日期範圍跨越多個日期。從我看到的這個應該適用於任何日期範圍。 –
我寫了「WHERE locate_received_date BETWEEN'2016-12-01 00:00:00.000'和'2016-12-01 23:59:59.999」,只寫了一天。我需要這個命令更通用,因此它可以運行數據庫中的所有日期。我在編輯我的問題的過程中添加我的表 –