以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教用SQL如何表达  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=187979)

--  作者:HJG_HB950207
--  发布时间:2023/8/24 19:02:00
--  请教用SQL如何表达
表【出门统计】 字段: 车牌,统计时间,通过次数
表【出门清单】字段: 车牌,出门时间

统计每部车牌在统计时间前后10分钟范围内的出门次数。

用以下代码较慢:


For Each drt As DataRow In DataTables("出门统计").DataRows
   Dim CP As String = drt("车牌") 
    Dim DA1 As Date = drt("统计时间")
      Dim sp As New TimeSpan(0, 10, 0)
Dim dt1 As Date = dA1 + sp  
Dim dt2 As Date = dA1 - sp

Dim A As Integer = DataTables("出门清单").Compute("COUNT(车牌)", "出门时间 <= \'#" & DT1 & "#\' AND 出门时间 >= \'#" & DT2 & "#\' AND 车牌=\'" & CP & "\'")
drt("通过次数") = A
   Next


请教如何用SQL代码效率更高?谢谢!





--  作者:有点蓝
--  发布时间:2023/8/24 20:18:00
--  
试试

select a.车牌,b.统计时间,count(a.车牌) as 通过次数 from 出门清单 as a inner join 出门统计 as b on  a.车牌=b.车牌 where DateDiff(\'n\', 出门时间, DateAdd(\'n\',10, 统计时间)) < 10 and DateDiff(\'n\', DateAdd(\'n\',-10, 统计时间), 出门时间) < 10 group by a.车牌,b.统计时间