Ниже приведен пример моей таблицы клиентов. Есть несколько записей, имеющих несколько значений в ДАТУ РОЖДЕНИЯ (по ошибке или около того). Я хочу выбрать только те записи, которые имеют одинаковые значения для LASTNAME, MIDDLENAME, FIRSTNAME, SSN, но разные ДЕНЬ РОЖДЕНИЯ:
Таблица участников
LASTNAME MIDDLENAME FIRSTNAME SSN BIRTHDAY
Jones M Carol 1234 17-DEC-45
Jones M Carol 1234 17-DEC-45
Jones M Carol 4425 20-APR-70
Black S Ted 5555 15-MAY-57
Roberts T Cole 1412 14-MAY-57
Roberts T Cole 1412 20-OCT-57
Roberts S Cole 1412 15-MAY-57
Я бы хотел, чтобы результат был:
LASTNAME MIDDLEANME FIRSTNAME SSN BIRTHDAY
Roberts T Cole 1412 14-MAY-57
Roberts T Cole 1412 20-OCT-57
Обратите внимание, что в таблице было несколько учетных записей с одинаковым SSN или полным именем, они не выбраны, поскольку у них не все одинаково. Также не выбрана Джонс М. Кэрол с 1234 в качестве SSN, поскольку у нее нет разных дней рождения для двух разных учетных записей.
Это мой SQL-запрос, который у меня есть, и он не всегда работает должным образом, так как показывает результаты без дублирования, которые я не хочу видеть.
SELECT x.FIRST_NM, x.MDL_NM, x.LAST_NM, x.SSN, x.BRTH_DT
FROM Member_table x
WHERE EXISTS
(
SELECT FIRST_NM, MDL_NM, LAST_NM, SSN, COUNT(*)
from Member_table
WHERE CURRENT_RECORD_IN = 'Y'
group by FIRST_NM, MDL_NM, LAST_NM, SSN
having count(distinct BRTH_DT) > 1
)
ORDER BY FIRST_NM ASC, LAST_NM ASC, MDL_NM ASC, SSN ASC;
Какой совет по этому запросу?