每小时的结果,即使在SQL Server上为0
我有一个查询,可以得到每小时的通话次数。从这个查询中,我得到了一个很好的结果,但是当“weekendTotals”和“weekTotals”为0时,它会忽略特定的小时数。这家商店从8点到22点营业。如何显示两个值均为零的小时数 我的SQL查询:每小时的结果,即使在SQL Server上为0,sql,sql-server,Sql,Sql Server,我有一个查询,可以得到每小时的通话次数。从这个查询中,我得到了一个很好的结果,但是当“weekendTotals”和“weekTotals”为0时,它会忽略特定的小时数。这家商店从8点到22点营业。如何显示两个值均为零的小时数 我的SQL查询: SELECT DATEPART(hour, CTime) AS Hour, COUNT(CASE WHEN DATEPART(dw, CDate) IN (5, 6) THEN 1 END) AS WeekendTotals,
SELECT
DATEPART(hour, CTime) AS Hour,
COUNT(CASE WHEN DATEPART(dw, CDate) IN (5, 6) THEN 1 END) AS WeekendTotals,
COUNT(CASE WHEN DATEPART(dw, CDate) NOT IN (5, 6) THEN 1 END) AS WeekTotals
FROM
[Example]
WHERE
DATEPART(YEAR, [CDate]) = @Jaar
AND DATEPART(MONTH, [CDate]) = @Maand
GROUP BY
DATEPART(hour, CTime)
ORDER BY
1 ,2
一些结果:
+------+---------------+------------+
| Hour | WeekendTotals | WeekTotals |
+------+---------------+------------+
| 8 | 0 | 4 |
| 9 | 2 | 1 |
| 10 | 8 | 2 |
| 11 | 6 | 10 |
| 12 | 1 | 4 |
| 13 | 3 | 3 |
| 14 | 3 | 5 |
| 15 | 6 | 3 |
| 16 | 4 | 4 |
| 17 | 2 | 3 |
| 18 | 1 | 1 |
| 19 | 1 | 0 |
+------+---------------+------------+
编辑问题添加一些示例数据&期望的结果会有帮助。Calendar-file LEFT JOIN aggregate ON hour.Yep-使用SQLFIDLE-创建表格-添加一些带有插入的数据,然后添加查询。然后链接sqlfiddle.adding示例表的示例数据。这将增加对解决问题的兴趣。这给了我与上面结果完全相同的结果。但是你的建议给了我一个主意。我使用的是Stimulsoft,所以我在您的查询开始时创建了一个空表<代码>从sys.all\u列中选择(按对象\u id排序)-1+8上方的顶部(22-8+1)行\u编号()代码>然后在Stimulsoft中将这些链接到一起。谢谢
WITH hourset (h)
AS (SELECT TOP (22 - 8 + 1)
ROW_NUMBER() OVER (ORDER BY object_id) - 1 + 8
FROM sys.all_columns)
SELECT hourset.h AS [Hour],
COUNT(CASE WHEN DATEPART(dw, e.CDate) IN (5, 6) THEN 1 END) AS WeekendTotals,
COUNT(CASE WHEN DATEPART(dw, e.CDate) NOT IN (5, 6) THEN 1 END) AS WeekTotals
FROM hourset
LEFT JOIN [Example] e ON hourset.h = DATEPART(HOUR, e.cTime)
WHERE
e.cTime IS NULL or
(DATEPART(YEAR, [CDate]) = @Jaar
AND DATEPART(MONTH, [CDate]) = @Maand)
GROUP BY hourset.h
ORDER BY 1,2;