Количество отличий SQL

#sql #sql-server

Вопрос:

У меня есть 3 стола.

 Table1 id dept 100 A  Table2 id dept 100 B  Table3 id dept 100 C 100 D  

Мой запрос и результат считаются 2
Мне нужно количество результатов 1 для идентификатора 100 независимо от поля отдела. Означает, что не учитывайте дубликат идентификатора в таблице 3.
Не знаю, почему это не работает. Спасибо.

 select distinct count(t3.id) countid from table3 t3 join table2 t2 on t3.id = t2.id join table1 t1 on t3.id = t1.id group by t3.id  

Комментарии:

1. Это COUNT(DISTINCT()) не DISTINCT COUNT() . С DISTINCT COUNT(*) помощью DISTINCT применяется к результатам подсчета, возвращая каждое значение только один раз

2. Как насчет использования select 1 , если вы всегда хотите 1 ?

Ответ №1:

пробовать

 select count(distinct (t3.id)) countid from table3 t3 join table2 t2 on t3.id = t2.id join table1 t1 on t3.id = t1.id group by t3.id  

Комментарии:

1. Я вижу, что нужно различать внутри цитаты. Превосходно.

Ответ №2:

Пожалуйста, попробуйте выполнить следующий запрос:

 select t1.id, (case when count(t3.id)gt;0 then 1 else 0 end) as countid from table1 t1 join table2 t2 on t1.id = t2.id join table3 t1 on t1.id = t3.id group by t1.id