我之前询问过这个查询,并且我取得了一些进展。现在我需要一个更受限制的数据集,但是我的代码存在问题。下面是我使用的是什么: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