小编mak*_*mak的帖子

计数子查询中的记录

我有一张表,其中记录着SQL Server 2008R2中的守卫巡逻。

每当值班开始时,都会创建一个新的警报编号,并在此警报编号内巡逻并启动一个时间。

如果执行了至少一次巡逻,则每12个小时我们将收取固定费用。如果在相同的警报编号下超过了12小时范围,则必须另外支付固定费用。

12小时的计算从第一次巡逻开始。

我尝试了一个临时表,但到目前为止无法解决。

DECLARE @t1 TABLE (
    AlertNo INT,
    Starttime SMALLDATETIME,
    Endtime SMALLDATETIME
)

INSERT INTO @t1 (AlertNo, Starttime, Endtime)

SELECT AlertNo,
       Starttimepatrol,
       DATEADD(HOUR, 12, Starttimepatrol)
FROM tblAllPatrols
WHERE PatrolNo = 1

SELECT AlertNo,
       (
           SELECT COUNT(*)
           FROM [tblAllPatrols] a
           INNER JOIN @t1 b ON b.AlertNo = a.AlertNo
           WHERE a.Starttimepatrol BETWEEN b.Starttime AND b.Endtime
       ) AS patrols
FROM [vwAlleDatensaetze]
GROUP BY AlertNo
Run Code Online (Sandbox Code Playgroud)

我知道这还不是故事的结局,但由于我什至无法计算巡逻的次数,因此无法找到解决问题的方法。

它应该以某种方式在每个警报编号的12小时范围内对巡逻进行“分组”,然后计算在同一警报编号下存在多少组。

希望你们中的某人可以带领我实现我需要的结果。

谢谢迈克尔的帮助

sql-server

5
推荐指数
1
解决办法
95
查看次数

标签 统计

sql-server ×1