我有一个名为movement_history的表(它表示汽车的移动(注册、销售、暂停、维修、销毁)。我想知道每辆车都卖给了谁的公司的信息。
这是我的表(select *)
code_car date_movement type_movement current_company_code
6000 01/01/2010 NEW 5
6000 01/01/2012 REPARATION 5
6000 01/11/2015 SOLD 8
6000 01/01/2017 DESTROYED 8
4444 01/05/2000 NEW 10
4444 01/05/2000 SUSPENDED 10
4444 01/05/2015 SOLD 5
4444 01/07/2015 RENOVATION 5
4444 09/12/2015 SOLD 18
.... ... ... ...因此,如果我想要在确定的时间(从01-01-2015到31-02-2015)内(01-01-2015到31-02-2015)公司5的所有汽车销量,结果如下:
code_car date_movement type_movement current_company_code
6000 01/11/2015 SOLD 8
4444 09/12/2015 SOLD 18这就是我的问题。首先,我从公司获得了所有的汽车5.然后,我获得了所有的‘售出’运动,如果某一天已经成为公司的一部分,我想要获得每一辆售出的汽车5.
select
code_car,date_movement,type_movement,current_company_code
from
movement_history where code_car in (
(select code_car from movement_history where current_company_code = 5)) and
code_car IN
(select code_car from movement_history where type_movement =
'SOLD' and code_car <> 5 and date_movement > to_Date('01-01-2015','dd/mm/yyyy') and date_movement < to_Date('31-12-2015','dd/mm/yyyy'));我猜我做得很糟糕,如果某天卖出的每辆车至少有一次成为公司的一部分。
有什么建议吗?非常感谢。
发布于 2018-11-11 01:25:55
我明白了。current_company_code是得到这辆车的公司。因此,您想要使用LAG()
select mh.*
from (select mh.*,
lag(mh.current_company_code) over (partition by mh.code_car order by date_movement) as prev_ccc
from movement_history mh
) mh
where mh.type_movement = 'SOLD' and
mh.date_movement >= date '2015-01-01' and
mh.date_movement < date '2016-01-01' and
mh.prev_ccc = 5;https://stackoverflow.com/questions/53241512
复制相似问题