Я для жизни меня не вижу, что мне здесь не хватает, но может кто-то указать мне, почему первый запрос не делает то, что я хочу, но второй работает отлично ? Я знаю, что запросы не совсем то же самое, но они должны возвращать те же 20 строк, а они нет. (заливка запрос найти 20 самых распространенных элементов в одной таблице)Простые места где находится
select distinct
rx.drug_class
from rx
where exists
(
select top 20
rx2.drug_class
,COUNT(distinct rx2.pat_id) as counts
,RANK() over(order by count(distinct pat_id) desc) as rn
from rx as rx2
--when the line below is commented out
--this subquery gives the correct answer
where rx.drug_class = rx2.drug_class
group by rx2.drug_class
)
Это один работает отлично
select distinct
rx.drug_class
from rx
where rx.drug_class in
(
select top 20 rx.drug_class
from rx
group by rx.drug_class
order by COUNT(distinct pat_id) desc
)
где положение в Exists подзапрос не работает, что дает?
Вы уверены, что комментируете 'где rx.drug_class = rx2.drug_class' заставляет его работать. Удаление этой ссылки на основной запрос преобразует предложение Exists в 'EXISTS (SELECT * FROM rx)' –