Код sql для отдельных полей

Мне было интересно, может ли кто-нибудь помочь мне с этим вопросом.

У меня есть две таблицы, которые я объединяю (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 

Пожалуйста, задавайте вопросы, если это не имеет смысла.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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 

Я считаю, что это сработало для меня. Однако я забыл упомянуть другие критерии. для RIC, NIIN не может перекрываться для одних RICS, но может для других. Пример A не может перекрывать B C D, но он может перекрываться с E, F, G.

CCP 31.07.2018 19:35

Что ж, вы не можете постоянно менять свой вопрос, вам следует задать для этого другой вопрос. К тому же упомянутые вами критерии не имеют смысла. Как узнать «определенные» RICS

Ajay Gupta 31.07.2018 19:40

Приношу свои извинения за изменение вопроса. Я постараюсь выразить это как можно точнее. Поле NIIN (в таблице DDS2ENVR.QBO) может иметь строки с одинаковым значением, но разными значениями в поле RIC. NIINS не следует засчитывать, если некоторые RICS имеют одинаковое значение NIIN. Пример: RIC A и RIC B могут иметь одинаковое значение NIIN, но его не следует подсчитывать, но RIC A и RIC E могут иметь одинаковый NIIN и должны учитываться. Следует ли мне задать еще один вопрос? Еще раз прошу прощения за недоразумение.

CCP 31.07.2018 19:53

Я предлагаю вам задать еще один вопрос. Логика разницы между B и E для A мне непонятна.

Ajay Gupta 31.07.2018 20:07

Я продолжу и задам еще один вопрос. Спасибо за помощь.

CCP 31.07.2018 20:12

Другие вопросы по теме

Похожие вопросы

Как в MS Access после создания динамического запроса обновить текстовые поля формы соответствующими значениями из набора записей?
Вставить строку в столбец SQL Server на основе длины существующего текста
SQL-запрос с условиями для аудита
Что является лучшей альтернативой «вспомогательной» таблице в базе данных Oracle?
Как определить конкретную (нечисловую) последовательность в записях SQL Server?
REGEXP оканчивается "буквой", после которой могут быть пробелы
Реально ли получить оператор SQL с несколькими JOIN и без предложения WHERE, извлекающего 8000 строк меньше 1 с?
Фильтровать значения строки на основе того, существует ли столбец, связанный с этой строкой, в другой таблице
Как переименовать данные столбца в уникальные строки, чтобы добавить уникальные ограничения для столбца с использованием временной метки unix?
Выбрать по языку, а затем по языку?