выбор родительской записи на основе дочернего элемента или наоборот на основе отсутствующего ind

#sql #oracle #oracle11g #oracle10g

#sql #Oracle #oracle11g #oracle10g

Вопрос:

Мне нужно выбрать родительскую или дочернюю запись, только если missing ind флаг установлен в 1.

вот пример данных.

Для родительского или дочернего missing_ind будет установлено значение 1, и я хочу выбрать все записи, только если для дочернего или родительского missing ind флага установлено значение 1.

Этот запрос возвращает все 3 записи, но я не могу добавить проверку is_missing_ind = 1, поскольку тогда он возвращает только дочерние записи.

 select * from sc_connect connect1
where 
exists( select * from sc_connect connect2 where connect1.connection_id = connect2.original_connection_id and connect1.type = connect2.original_type)
  

Комментарии:

1. Вы хотите, чтобы дочерний элемент просматривался только в том случае, если у родителя есть is_missing_ind = 1, а затем выберите все дочерние элементы с одним и тем же родителем и is_missing_ind = 1? Я прав?

2. Я хочу, чтобы оба были рассмотрены. Т. е. родительский отсутствующий ind = 1 или дочерний отсутствующий ind = 1 должны вводить как дочерний, так и родительский, поскольку один из них установлен в 1. Кроме того, они должны вводиться только тогда, когда для одного из них установлено значение 1.

Ответ №1:

 WITH
    summary AS
(
    SELECT
        s.*, 
        SUM(is_missing_ind) OVER (PARTITION BY original_connection_id) AS group_is_missing_ind
    FROM
        sc_connect s
)
SELECT
    *
FROM
    summary
WHERE 
    group_is_missing_ind > 0