Это сценарий, данный
SELECT *
FROM arcade_machine_history_movement
WHERE code_machine = 23502
ORDER BY date_movement ASC;
CODE_MACHINE TYPE date_movement CURRENT_COMPANY
23502 T 01/01/2015 SPAIN GAMES
23502 T 01/03/2016 SPAIN GAMES
23502 T 01/01/2016 SPAIN GAMES
23502 S 01/01/2019 FUN GAMES
23502 T 11/01/2019 FUN GAMES
23502 S 11/03/2019 POKER STAR
Таблица arcade_machine_history_movement представляет все истории движений игровых автоматов. «S» означает продажу от одной компании от другой.
Я хочу получить данные о продажах каждого игрового автомата и узнать текущую компанию (покупателя) и предыдущую компанию (того, кто продает автомат)
Это то, что я сделал
SELECT code_machine,
type_m,
current_company,
Lag (current_company)
OVER (
ORDER BY date_movement ASC) AS previous_company
FROM arcade_machine_history_movement
WHERE code_machine = 23502;
С отставанием я получаю предыдущую компанию в каждом ряду.
Так что это результат.
code_machine type_m date_movement current_company previous_company
23502 T 01/01/2015 SPAIN GAMES
23502 T 01/03/2016 SPAIN GAMES SPAIN GAMES
23502 T 01/01/2016 SPAIN GAMES SPAIN GAMES
23502 S 01/01/2019 FUN GAMES SPAIN GAMES
23502 T 11/01/2019 FUN GAMES SPAIN GAMES
23502 S 11/03/2019 POKER GAMES FUN GAMES
Так что теперь я хочу создать другой выбор из этого предыдущего выбора, чтобы получить только движения 'S', но я не знаю, как это сделать правильно.
code_machine type_m date_movement current_company previous_company
23502 S 11/03/2019 FUN GAMES SPAIN GAMES
23502 S 11/03/2019 POKER GAMES FUN GAMES
Вот что я пробовал:
SELECT code_machine,
type_m,
date_movement,
current_company,
previous_company
FROM (code_machine,type_m,date_movement, current_company, lag
(current_company) OVER (ORDER BY date_movement ASC) AS empresa_anterior
FROM arcade_machine_history_movement WHERE code_machine 23502)
WHERE type_m ='S';
Я запускаю этот запрос, но он не завершается, и он все время думает.
Я использую Oracle SQL developer
Я ценю любое предложение.