私は一生ここで何が欠けているのかわかりませんが、最初のクエリが私が望むことをしない理由を誰かが私に指摘できますが、2番目のクエリは正常に機能しますか?クエリが完全に同じではないことは知っていますが、同じ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サブクエリのwhere句が機能していませんが、何が得られますか?