以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教用SQL如何表达 (http://foxtable.net/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.统计时间
|