表【出门统计】 字段: 车牌,统计时间,通过次数
表【出门清单】字段: 车牌,出门时间
统计每部车牌在统计时间前后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代码效率更高?谢谢!
试试
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.统计时间