#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