以下のクエリは複雑なビューに基づいており、ビューは希望どおりに機能します (当面の質問に役立つとは思わないため、ビューを含めるつもりはありません)。私が正しく理解できないのは、drugCountsinFamilies
列です。distinct drugName
各ドラッグファミリーの の数を表示する必要があります。最初のスクリーン キャプチャから、3 つの異なる H3A 行があることがわかります。drugCountsInFamilies
H3Aのは 3 にする必要があります (3 つの異なる H3A 薬があります。)
2 番目のスクリーン キャプから、最初のスクリーン キャプで何が起こっているかが分かりますdrugCountsInFamilies
。これは、薬物名がリストされている行数をキャッチしているということです。
以下は私の質問で、間違っている部分にコメントがあります
select distinct
rx.patid
,d2.fillDate
,d2.scriptEndDate
,rx.drugName
,rx.drugClass
--the line directly below is the one that I can't figure out why it's wrong
,COUNT(rx.drugClass) over(partition by rx.patid,rx.drugclass,rx.drugname) as drugCountsInFamilies
from
(
select
ROW_NUMBER() over(partition by d.patid order by d.patid,d.uniquedrugsintimeframe desc) as rn
,d.patid
,d.fillDate
,d.scriptEndDate
,d.uniqueDrugsInTimeFrame
from DrugsPerTimeFrame as d
)d2
inner join rx on rx.patid = d2.patid
inner join DrugTable as dt on dt.drugClass=rx.drugClass
where d2.rn=1 and rx.fillDate between d2.fillDate and d2.scriptEndDate
and dt.drugClass in ('h3a','h6h','h4b','h2f','h2s','j7c','h2e')
order by rx.patid
句に個別を追加しようとすると、SSMS が怒ってしまいcount(rx.drugClass)
ます。ウィンドウ関数を使用して実行できますか?