Мне нужно определить студентов (student_id) с уникальным person_id и вернуть еще один столбец с 0, если он не уникален, с 1 при уникальности.SQL Query optimization - определение уникальных значений
Вот что у меня есть:
Select
student_id, 0
FROM
PERSON
WHERE
PERSON.person_id in (
SELECT PERSON.person_id
FROM PERSON
WHERE PERSON.person_id<>''
GROUP BY PERSON.person_id
HAVING COUNT(*)>1
)
UNION
Select
student_id, 1
FROM
PERSON
WHERE
PERSON.person_id not in (
SELECT PERSON.person_id
FROM PERSON
WHERE PERSON.person_id<>''
GROUP BY PERSON.person_id
HAVING COUNT(*)>1
)
Образец данных: http://pastebin.com/EcqQU88J MS SQL Server
Есть ли более эффективный способ сделать эту работу?
'ВЫБОР student_id, случай, когда СЧЕТ (DISTINCT person_id) = 1 ТОГДА 1 0 КОНЕЦ ИНАЧЕ ОТ #PERSON GROUP BY student_id' [демо] (https: // данных. stackexchange.com/stackoverflow/query/406875) – lad2025
@ lad2025 Он возвращает только «1» во второй колонке. –
Итак? Это означает, что в ваших данных для каждого студенческого идентификатора это только уникальный person_id. Покажите пример (для данных, которые вы предоставили), когда он должен вернуться 0 – lad2025