2017-03-10 12 views
0

最後の1時間の生産数を10秒ごとにグループ化して表示します。
は、これまでのところ、私はこの生産数は10秒ごとにグループ化されます

SELECT 

COUNT(*) AS [PRODUCTION], 
(DATEPART(HOUR, DATEADD(SECOND, -(DATEPART(SECOND, TL_Timestamp)) % 10, TL_Timestamp))) AS [HOUR], 
(DATEPART(MINUTE, DATEADD(SECOND, -(DATEPART(SECOND, TL_Timestamp)) % 10, TL_Timestamp))) AS [MIN], 
(DATEPART(SECOND, DATEADD(SECOND, -(DATEPART(SECOND, TL_Timestamp)) % 10, TL_Timestamp))) AS [FROMSECOND] 

FROM tblTransaction 
WHERE TL_Timestamp BETWEEN DATEADD(HOUR,-1, GETDATE()) AND GETDATE() 
AND TL_IsAccepted = 1 
GROUP BY 
(DATEPART(HOUR, DATEADD(SECOND, -(DATEPART(SECOND, TL_Timestamp)) % 10, TL_Timestamp))), 
(DATEPART(MINUTE, DATEADD(SECOND, -(DATEPART(SECOND, TL_Timestamp)) % 10, TL_Timestamp))), 
(DATEPART(SECOND, DATEADD(SECOND, -(DATEPART(SECOND, TL_Timestamp)) % 10, TL_Timestamp))) 
ORDER BY 
(DATEPART(HOUR, DATEADD(SECOND, -(DATEPART(SECOND, TL_Timestamp)) % 10, TL_Timestamp))) DESC, 
(DATEPART(MINUTE, DATEADD(SECOND, -(DATEPART(SECOND, TL_Timestamp)) % 10, TL_Timestamp))) DESC, 
(DATEPART(SECOND, DATEADD(SECOND, -(DATEPART(SECOND, TL_Timestamp)) % 10, TL_Timestamp))) DESC 

を行っているこれが正常に動作しているが、生産量は全体の10秒間起きていない場合、そのは考慮していません。私はそれをゼロにしたい。
アイデア

+1

は、リンクをを基準に見ます完璧な質問をする方法を知っている:https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ – TheGameiswar

答えて

2

すべてのタイムスタンプグループ(あらかじめ固定された固定)でテーブルを作成し、結合の最初のテーブルとして配置することができます。

例: (彼らはすなわち、単一の時間、または8640のために一日のために、あなたのケースで360を記録する必要があります)

ID MIN SEC 
1 00 10 
2 00 20 
3 00 30 

... あなたがそれを呼び出す場合TL_TIME_DIVISION

SELECT TL_TIME_DIVISION.HOUR, TL_TIME_DIVISION.MIN, TL_TIME_DIVISION.SEC, COALESCE (PRODUCTION,0) AS PRODUCTION 
FROM TL_TIME_DIVISION 
LEFT JOIN **your query** ON **use Hour, min e sec** 
関連する問題