У меня есть набор данных, который выглядит так:
введите описание изображения здесь
Эти данные извлекаются прямо сейчас следующим образом:
Select * from myTable
Все строки должны остаться, кроме первых двух, потому что это пары строк с одинаковым именем пакета, но у второго есть код CMPL. Таким образом, если есть пакет с кодом FAIL и у него есть соответствующая строка кода CMPL, тогда они отменяют друг друга, и оба должны быть отфильтрованы. Сложность состоит в том, чтобы оставить все остальные строки с пакетами с кодом FAIL и удалить только эту конкретную пару.
Используя предложение WITH, я пробовал EXISTS, LEAD, LAG и ROWNUM, но ни один из этих подходов, похоже, не работает работают, насколько я могу судить. Каким-то образом должен быть способ определить, существуют ли эти пары строк для процесса, в котором одна из строк является CMPL, чтобы эту пару строк можно было удалить.
Этот набор данных выглядит по-разному каждый день. Иногда в пакете есть несколько пар строк, как я описал. Иногда их нет. Это базовый пример c.
Есть ли способ определить, появляется ли одна из этих пар строк, и удалить их?