![](/img/trans.png)
[英]Creating table from SQL Select statements and combining the results into a single record
[英]SQL Server - Combining results from a single query
使用SQL Server 2008R2,我尝试编写一个查询,该查询将返回特定时间范围内的所有值的总和(在这种情况下,间隔为15分钟)从长远来看,它将用于标识丢失的数据(每个服务器应为每15分钟返回12的值)。 我已经到了可以得到我正在寻找的结果的地步,但是我需要一种将它们全部合并到同一查询中的方法。 以下代码(此日期通常由变量定义,在这种情况下,以09/01/2013为例):
Select SUM(Accounted_for) 'accounted for',date,time,server
from dbmetrics.dbo.tblmissing
where DATE='09/01/2013'
and (TIME between '00:00:00' and '23:59:59')
and SERVER='Server01'
group by DATE, TIME, server , DATEPART(hour,time),
DATEPART(MINUTE,time),DATEPART(second,time) / 96
GO
结果按此方式返回”返回的结果如下所示
Number Date Time Server
4 2013-09-01 12:00:01.0000000 server01
6 2013-09-01 12:00:02.0000000 server01
2 2013-09-01 12:00:15.0000000 server01
10 2013-09-01 12:15:02.0000000 server01
2 2013-09-01 12:15:09.0000000 server01
我想看到的是
12 2013-09-01 12:00:00.0000 Server01
12 2013-09-01 12:15:00.0000 Server01
您可能需要GROUP BY
的[Server]
,而不是让MAX()
的[Server]
。 正如亚伦·伯特兰德( Aaron Bertrand )所述,您的时间价值恰好间隔15分钟。 该查询将把时间舍入到分钟并按此对数据进行分组。
SELECT SUM([Number]) AS [Number],
[Date],
CONVERT(time, DATEADD(minute, DATEDIFF(minute, 0, [Time]), 0)) AS [Time],
MAX([Server])
FROM [Table]
GROUP BY [Date],
DATEADD(minute, DATEDIFF(minute, 0, [Time]), 0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.