Я понимаю, что это может показаться странным, поэтому позвольте мне объяснить, чего я пытаюсь достичь. У меня есть следующие данные.
trxn_id event_value
1567 4
1567 1
1567 23
2568 1
2568 4
2568 5
Теперь мне нужно выбрать все те транзакции, которые не имеют значения события 23
.
Если я сделаю select trxn_id from table where event_value<>23
, тогда, по-видимому, я получу идентификатор trxn, поскольку в нем появляются и другие значения события.
что я сделал, чтобы решить эту проблему - это выбрать отдельный trxn_id, перебрать их и вставить только те из них, которые не имеют event_value 23. Как показано ниже.
FOR v_intrim_loop1 IN (select distinct t.trxn_id from table t)
LOOP
BEGIN
if(not exists(select 1 from table where event_id=23 and trxn_id=v_intrim_loop1.trxn_id)) THEN
insert into temp_table(trxn_id) values (v_intrim_loop1.trxn_id);
END IF;
END;
END LOOP;
Я считаю, что есть простой и более эффективный способ сделать это. Пожалуйста, дайте мне знать, как. Спасибо.