2017-03-10 7 views
0

T-SQL、ストアドプロシージャ、およびMicrosoft SQL Server Management Studioはまだかなり新しいです。T-SQL - DateTime列を使用して毎日作成される行の量を選択します。

私は過去6ヶ月間の履歴を保存している履歴詳細というテーブルを持っています。呼び出しが行われたときを知るためにDateTimeの列があります。私はダッシュボードを作成しており、毎日の通話量のリストを作成したいと考えています。

------------------------------------------------------ 
| Id | DateTime    | Message    | 
|----+-------------------------+---------------------| 
| 1 | 2017-02-27 11:52:44.723 | Room 101 called you | 
|----+-------------------------+---------------------| 
| 2 | 2017-02-27 11:53:58.689 | Room 101 called you | 
|----+-------------------------+---------------------| 
| 3 | 2017-02-28 10:41:30.440 | Room 102 called you | 
------------------------------------------------------ 

結果、私はは日のリストとそれぞれの日に行われたコールの量(作成された行)であるたいと思います:

は、ここに私のデータベース内のデータの簡単な例です。

---------------------------------------- 
| Date  | Amount of calls (rows) | 
|-------------+------------------------| 
| 2017-02-27 | 2      | 
|-------------+------------------------| 
| 2017-02-28 | 1      | 
|-------------+------------------------| 
| 2017-03-01 | 5      | 
|-------------+------------------------| 
| 2017-02-02 | 2      | 
---------------------------------------- 

私がこれまでに作ることができましたSQLクエリがの量を返すことができるだけである:例えば

(私のデータベースは、6ヶ月より古いすべてが削除された6ヶ月間のデータを保持します)ここでは、一日のために(行が作成される)行われた呼び出しは、クエリは次のとおりです。

SELECT COUNT(*) 
FROM HistoryDetails 
WHERE (AlarmHistoryDetails.DateTime BETWEEN DATEADD(dd, DATEDIFF(dd,0,GETDATE()), 0) AND DATEADD(dd, DATEDIFF(dd,0,GETDATE()), 1)) 

これは、その結果:

(No column name) 
22 

これは私が必要とするものではありません。

必要な結果を得るために必要なクエリは何ですか?

答えて

2

あなたはgroup byを探しています:

SELECT CAST(hd.DateTime as DATE) as dte, COUNT(*) 
FROM HistoryDetails hd 
GROUP BY CAST(hd.DateTime as DATE) 
ORDER BY dte; 
+0

クイックレスポンスを+、それが働きました。どうもありがとうございました。 – Gogoku7

0

GROUP BY句たい:

SELECT CAST(DateTime as DATE) as [Date], COUNT(*) As AmountOfCalls 
FROM HistoryDetails 
GROUP BY CAST(DateTime as DATE) 
ORDER BY [Date]; 
関連する問題