【发布时间】:2017-06-20 16:25:40
【问题描述】:
我正在尝试编写一个 T-SQL 查询,该查询在特定时间段内查找表中的条目数量,然后按分钟(条目/分钟)对它们进行分组。 但我无法让它显示 0 个条目的分钟数。
我的查询看起来像:
select
[Minute],
Files
from
(
select
(DATEDIFF(MINUTE, '2017-02-02 17:00:00.000', RegTime) / 1) as [Minute] ,
count(*) as Files
from TransferLog
WHERE RegTime BETWEEN '2017-02-02 17:00:00.000' AND '2017-02-03 04:00:00.000'
group BY
(DATEDIFF(MINUTE, '2017-02-02 17:00:00.000', RegTime) / 1)
) x order by [Minute]
有什么想法吗?
编辑1。例外输出将显示分钟,表中没有条目。此外,当发生这种情况时,查询相当不可用,因为我不知道哪一分钟没有数据。例如,如果我想要 800 分钟的数据,但有 20 分钟没有数据写入表,这只会显示 780 分钟的数据。有没有为此目的对数据进行排序或修改查询?
Expected output:
Minute | Files
0 685
1 0
2 672
3 0
4 415
5 434
6 746
-
Current Output:
Minute | Files
0 685
1 672
2 415
3 434
4 746
【问题讨论】:
-
结果中的每一行都是从输入表中的一行或多行生成的。您不会得到带有零的行,因为...没有行可以提供该日期时间值。
-
您可能需要加入日历表以获取差异未出现在数据集中的分钟数。
-
请发布您的表架构和预期输出。
标签: sql-server tsql datetime sql-server-2016