我之前詢問過這個查詢,並且我取得了一些進展。現在我需要一個更受限制的數據集,但是我的代碼存在問題。下面是我使用的是什麼:SQL 2012返回次數和兩次之間的總和
DECLARE @mindate DATETIME = '2011-12-30'
DECLARE @maxdate DATETIME = '2011-12-31'
;WITH cte
AS (SELECT
CONVERT(DATETIME,@mindate) AS [StartDate],
DATEADD(MI, 10,CONVERT(DATETIME,@mindate)) AS [EndDate]
UNION ALL
SELECT
DATEADD(MI, 10, [StartDate]),
DATEADD(MI, 10, [EndDate])
FROM cte
WHERE [StartDate] < CONVERT(DATETIME,@maxdate))
SELECT
[StartDate],
[EndDate],
COUNT(cr.MESSAGE_SIZE) AS [TransactionItemsMigrated],
SUM(cr.MESSAGE_SIZE) AS [TransactionSizeBytes],
(SELECT COUNT(*) FROM MESSAGE WHERE MESSAGE_STATUS = 2) [CurrentItemsFailed]
FROM cte
LEFT JOIN CROSS_REFERENCE cr
ON cr.MIGRATION_DATE_TIME BETWEEN [StartDate] AND [EndDate]
GROUP BY cte.StartDate, cte.EndDate
OPTION (MAXRECURSION 0)
我需要顯示一排,每10分鐘,即使TransactionItemsMigrated和/或TransactionSizeBytes爲0或NULL。我得到的結果不會每10分鐘顯示一次。 StartDate和EndDate之間的時間跨度顯示正確,並且似乎正確計數了項目和大小,但StartDate正在跳躍超過10分鐘。下面的每個條目都是一行。
StartDate 2016-02-01 00:40:00.000
EndDate 2016-02-01 00:50:00.000
TransactionItemsMigrated 1925
TransactionSizeBytes 1843712
CurrentItemsFailed 6538601
StartDate 2016-02-01 01:50:00.000
EndDate 2016-02-01 02:00:00.000
TransactionItemsMigrated 1892
TransactionSizeBytes 51712
CurrentItemsFailed 6538601
我無法粘貼結果,因爲它在沒有複製/粘貼訪問權限的虛擬機上運行。有什麼建議麼?
此外,示例數據只是取樣,而不是我的實際結果。不要擔心日期,除非看到StartTime的 –
之間存在差距您可以通過添加訂單並檢查它是否真的沒有顯示所有間隔或只是無序嗎? – mxix
您是否有意在'@ maxdate'上排除10分鐘的間隔?請注意,當您可能需要'start <= event
HABO