在开始和结束时间之间对记录进行分组

时间:2014-05-16 18:16:04

标签: sql datetime sql-server-2008-r2 group-by

我有一个测试数据库,每个测试都有一个StartTime和(对于那些已完成的)EndTime值。 我想创建一个查询,显示每小时运行的测试数。

即。在任何给定时间测试具有startTime但不是EndTime。

我制定了分组内容 - 感谢this answer中的@p.cambell到问题SQL Server Group by Count of DateTime Per Hour?

1 个答案:

答案 0 :(得分:1)

您可以使用条件聚合执行此操作:

SELECT CAST(StartDate as date) AS ForDate,
       DATEPART(hour, StartDate) AS OnHour,
       COUNT(*) AS TotalStarts,
       SUM(CASE WHEN CAST(StartDate as date) <> CAST(EndDate as date) or
                     DATEPART(hour, StartDate) <> DATEPART(hour, EndDate)
                THEN 1
                ELSE 0
           END) as StartedButNotEndedInHour
FROM #Events
GROUP BY CAST(StartDate as date),
       DATEPART(hour,StartDate)