Мне было интересно, может ли кто-нибудь помочь мне с этим вопросом.
У меня есть две таблицы, которые я объединяю (DDS2ENVR.QBO AND KCA0001.ORTS)
В таблице QBO есть поле с надписью NIIN AND RIC. В таблице KCA0001.ORTS есть поля с именами SERVICE и OWN_RIC.
Присоединяюсь к таблицам по QBO.RIC и ORTS.OWN_RIC. Моя дилемма заключается в том, что в поле NIIN несколько строк могут быть идентичными, но иметь разные значения для RIC.
Пример:
NIIN RIC
123455 A
122222 B
123456 C
122222 A
Я хочу запросить отдельный счетчик для NIINS, который отделяется от другой службы, где он не перекрывается. Таким образом, пример NIIN должен находить только отдельные значения, связанные только с A, где тот же NIIN не найден в B, C, D и т. д.
SELECT D.SERVICE, COUNT(C.NIIN)
FROM DDS2ENVR.QBO C
JOIN KCA0001.ORTS D ON D.OWN_RIC = C.RIC
WHERE C.SITE_ID = ('HEAA')
GROUP BY D.SERVICE
HAVING COUNT(DISTINCT C.NIIN) > 1
Пожалуйста, задавайте вопросы, если это не имеет смысла.


Использование Not Exists
SELECT D.SERVICE, COUNT(C.NIIN)
FROM DDS2ENVR.QBO C
JOIN KCA0001.ORTS D ON D.OWN_RIC = C.RIC
WHERE C.SITE_ID = ('HEAA')
and NOT EXISTS (Select 1 from DDS2ENVR.QBO C1 where C1.NIIN = C.NIIN and C1.RIC <> C.RIC)
GROUP BY D.SERVICE
HAVING COUNT(DISTINCT C.NIIN) > 1
Также, если таблица DDS2ENVR.QBO не содержит дубликатов и ваша база данных поддерживает CTE
With cte as
(Select NIIN from DDS2ENVR.QBO group by NIIN having count(*) = 1)
SELECT D.SERVICE, COUNT(C.NIIN)
FROM DDS2ENVR.QBO C
JOIN KCA0001.ORTS D ON D.OWN_RIC = C.RIC
WHERE C.SITE_ID = ('HEAA')
and C.NIIN in (Select * from cte)
GROUP BY D.SERVICE
HAVING COUNT(DISTINCT C.NIIN) > 1
Что ж, вы не можете постоянно менять свой вопрос, вам следует задать для этого другой вопрос. К тому же упомянутые вами критерии не имеют смысла. Как узнать «определенные» RICS
Приношу свои извинения за изменение вопроса. Я постараюсь выразить это как можно точнее. Поле NIIN (в таблице DDS2ENVR.QBO) может иметь строки с одинаковым значением, но разными значениями в поле RIC. NIINS не следует засчитывать, если некоторые RICS имеют одинаковое значение NIIN. Пример: RIC A и RIC B могут иметь одинаковое значение NIIN, но его не следует подсчитывать, но RIC A и RIC E могут иметь одинаковый NIIN и должны учитываться. Следует ли мне задать еще один вопрос? Еще раз прошу прощения за недоразумение.
Я предлагаю вам задать еще один вопрос. Логика разницы между B и E для A мне непонятна.
Я продолжу и задам еще один вопрос. Спасибо за помощь.
Я считаю, что это сработало для меня. Однако я забыл упомянуть другие критерии. для RIC, NIIN не может перекрываться для одних RICS, но может для других. Пример A не может перекрывать B C D, но он может перекрываться с E, F, G.