Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 根据以下给定结构设置时间间隔_Sql - Fatal编程技术网

Sql 根据以下给定结构设置时间间隔

Sql 根据以下给定结构设置时间间隔,sql,Sql,表结构可能是这样的 S.no Time Interval no of keys 1 8:00 AM - 8:10 AM(ENTRY STARTS) 66 2 8:10 AM- 8:20 AM 6 3 8:20 AM - 8:30 AM 43 .... Nth 3:50PM - 4:00 PM(LAST ENTRY FOR REP

表结构可能是这样的

S.no  Time Interval                      no of keys

1     8:00 AM - 8:10 AM(ENTRY STARTS)      66

2     8:10 AM- 8:20 AM                     6

3     8:20 AM - 8:30 AM                    43

....

Nth   3:50PM - 4:00 PM(LAST ENTRY FOR REPORT)
如何使用SQL查询并希望在ASP.NET GridView中使用它来执行此操作

使用下面的数据,现在我尝试将键的数量放在workdatetime的开始时间和最后一个workdatetime之间

注意:时间间隔已更改,请不要担心

我无法在时间间隔之间设置键的数量

我想显示与上面相同的结构,只添加一列关于时间间隔的键

WorkdateTime    ************    NoOfKeys
16:52:04    ************    54
16:52:06    ************    0
16:52:07    ************    2
16:52:25    ************    0
16:52:26    ************    0
16:52:35    ************    0
16:52:35    ************    0
16:53:15    ************    0
16:53:55    ************    0
16:54:28    ************    11
16:54:35    ************    0
16:55:15    ************    0
16:55:55    ************    0
16:56:35    ************    0
16:57:15    ************    0
16:57:28    ************    103
16:57:55    ************    0
16:58:35    ************    0
16:58:39    ************    2
16:59:09    ************    19
16:59:15    ************    0
16:59:42    ************    40
16:59:43    ************    2
16:59:55    ************    0
17:00:35    ************    0
17:01:15    ************    0
17:01:35    ************    4
17:01:55    ************    0
17:02:35    ************    0
17:03:15    ************    0
17:03:55    ************    0
17:03:58    ************    2
17:04:24    ************    3
17:04:35    ************    
17:05:15    ************    0
17:05:40    ************    0
17:05:46    ************    14
17:05:47    ************    0
17:05:50    ************    2
17:06:30    ************    0
17:06:37    ************    1
17:07:10    ************    0
17:07:50    ************    0
17:08:12    ************    1
17:08:30    ************    0
17:09:10    ************    0
17:09:27    ************    42
17:09:50    ************    0

请检查下面的查询。该解决方案使用CTE生成开始时间和结束时间之间的所有时间范围,并与workdatetime数据表进行左连接:

DECLARE @mindate DATETIME
DECLARE @maxdate DATETIME

SET @mindate = '08:00 AM'
SET @maxdate = '05:00 PM'



;WITH cte(startDt, endDt)
AS
(  
    SELECT @mindate AS startDt, DATEADD(mi,10,@mindate) AS endDt 
    UNION ALL
    SELECT cte.endDt, DATEADD(mi,10,cte.endDt) FROM cte WHERE endDt < @maxdate
)
SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), startDt, 100), 7))+'-'+LTRIM(RIGHT(CONVERT(VARCHAR(20), endDt, 100), 7)) timerange, SUM(ISNULL(NoOfKeys,0))

FROM cte
LEFT JOIN Work w
ON w.WorkDateTime >= cte.StartDt AND w.WorkDateTime < cte.EndDt 
GROUP BY startDt, EndDt
option (maxrecursion 32767) 
让我知道这是否是你要找的


这是位于

的代码是概念正确且已设置间隔,但在时间间隔移位之间未设置键号。我正试图修改它,请支持我解决这个问题。好的,太好了。。您想要每个时间范围内的noofkeys的总和吗。如果是这样,那么查询应该可以工作。请检查SQL小提琴。示例数据只有一行,它显示在输出结果集中。如果您有其他要求,请告诉我。