私は次のクエリを持っています
select * from
(
SELECT distinct
rx.patid
,rx.fillDate
,rx.scriptEndDate
,MAX(datediff(day, rx.filldate, rx.scriptenddate)) AS longestScript
,rx.drugClass
,COUNT(rx.drugName) over(partition by rx.patid,rx.fillDate,rx.drugclass) as distinctFamilies
FROM [I 3 SCI control].dbo.rx
where rx.drugClass in ('h3a','h6h','h4b','h2f','h2s','j7c','h2e')
GROUP BY rx.patid, rx.fillDate, rx.scriptEndDate,rx.drugName,rx.drugClass
) r
order by distinctFamilies desc
次のような結果が得られます
これは、テーブル内の2つの日付の間に、5つの一意の薬剤名が必要であることを示すpatIDを意味するはずです。ただし、次のクエリを実行すると、次のようになります。
select distinct *
from rx
where patid = 1358801781 and fillDate between '2008-10-17' and '2008-11-16' and drugClass='H4B'
次のような結果セットが返されます
実際、2008-10-17と2009-01-15の日付の間の2番目のクエリに対して5つの行が返されますが、一意の名前は3つしかないことがわかります。私はover句を変更するさまざまな方法を試しましたが、すべて失敗のレベルが異なります。各行に指定された時間枠内で一意 のをのみ検索するようにクエリを変更するにはどうすればよいですか?drugName