#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