您好,
我有一个问题,我很长时间都无法解决这个问题,我非常绝望。
我有一个数据库(SQL Server),其中包含名为'ProcessData'的表和名为'Process_Name'的列(数据类型:nvarchar(50)),'Start_At'(数据类型:DateTime)和'End_At'(数据类型:DateTime )。
我需要知道每个'时间间隔'(假设1分钟)有多少进程(Process_Name = PN)被打开(等于'Start_at'列之后或之前或等于'End_At'列)在此期间(它可以是具有相同数据的几行)。
有没有人知道如何在没有'for'循环的情况下进行此查询? (它的ITSELF将推广时间),(答案将是一个包含两列的表(1.检查发生的时间.2。此时打开进程的数量。)和每个'时间间隔的行'(本例中为1分钟)
(如果有帮助,我正在使用C#.net)
非常感谢,
答案 0 :(得分:0)
以下内容应返回开始时间小于或等于请求的时间点且结束时间大于或等于的表中的检查时间和进程数:
DECLARE @pot DATETIME
-- SET @pot TO THE POINT OF TIME YOU WANT THE DETERMINE THE ENTRIES FOR
SELECT @pos, COUNT(*) FROM ProcessData
WHERE @pot BETWEEN Start_At AND End_At
这假设您正在使用SQL Server - 但在其他方言中可能会有一些等效的。
您也可以延长时间间隔,但要做两次检查,一次是“开始时间点”,另一次是“结束时间点”。
答案 1 :(得分:0)
看看这两个SO问题/答案SQL Server related question和sql query to solve the following
他们都处理同样的问题......