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小提琴。示例数据只有一行,它显示在输出结果集中。如果您有其他要求,请告诉我。