查询仅将汽车放入停车场

问题描述

我想从一个停车场中生成报告,并使用该停车场获取我致电查询时所处的车厢。

假设我们有两个入口和两个出口,那么我该如何用SQL来仅使停车场内的汽车进入。

如何获取这些值?

我的表的记录示例:

id  lic plate   date                     lane    access id_user
__________________________________________________________________
10  1234-BK     2020-08-11 12:24:00.000    1     OK      4
11  1234-BK     2020-08-11 12:25:00.000    3     OK      4

在该示例中,我们假设这辆车不在停车场内,因为1号车道是从入口进入的,而3号车道是从出口出来的,所以我们拥有的最后一条记录是在出口车道上。

有了这些信息,您是否可以定向我进行此查询以将所有汽车都放入里面?

解决方法

您应该存储汽车是进入还是离开。对于这样的应用程序,这似乎很基本。

如果没有,您可以计算到给定时间的记录数,并且如果该值是奇数,则表示汽车已驶入甚至已驶出。所以要把车放进去:

select lic_plate
from t
where date < @date
group by lic_plate
having count(*) % 2 = 1;

如果您有出入口车道,则可以使用相关的子查询获取最后一条记录,并检查最终的长矛:

select t.*
from t
where t.date = (select max(t2.date)
                from t t2
                where t2.lic_plate = t.lic_plate and
                      t2.date < @date
               ) and
      t.lane = 1;  -- last lane is an entrance lane
,

要获取行,其中每个“ lic_plate”的最后一个“ lane”是泳道1,OP可以使用开窗功能。

;with get_max_cte as (
    select t.*,ROW_NUMBER() over (partition by lic_plate order by t.[date] desc) rn)
select * from get_max_cte
where rn=1 and lane=1

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...