3
과 같이 결과를 다음 쿼리
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
이 테이블에서 두 날짜 사이의 patID이되어야한다는 것을 의미한다이 5 고유 한 약물 이름. 나는 다음과 같은 쿼리를 실행할 때, :
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 사이에는 3 개의 고유 한 이름 만 있습니다. 저는 over 절을 수정하는 다양한 방법을 시도했습니다. 모두 다른 레벨의 성공하지 못했습니다. 각 행에 대해 지정된 시간 내에 고유drugName
만 고유하도록 쿼리를 변경하려면 어떻게해야합니까?
두 번째 쿼리가 첫 번째 쿼리와 어떻게 관련되는지 설명하십시오. "내 검색어를 어떻게 바꿀 수 있습니까?"라는 질문을 펼치십시오. - drugName과 함께 다른 열을 선택해야하며, 고유 한 drugName과 함께 표시되어야하는 clmid (예)를 어떻게 결정합니까? (나는 당신이 "단순한 drugName을 rx에서 patid = xxx .....와 같이 선택하는 것을 원하지 않는다고 가정하고있다!") –
두 번째 쿼리는 테이블의 ACTUAL 데이터이기 때문에 첫 번째 쿼리와 관련이 있습니다. 두 번째 쿼리에는 다섯 개의 행이 있음을 알 수 있습니다. 이 다섯 행은 첫 번째 화면 캡의 'distinctFamilies'열에 해당합니다. 그러나 실제로는 세 가지 고유 한 약물 이름 만 있음을 알 수 있습니다. – wootscootinboogie
당신이 oracle'count (distinct fieldname1) 이상 (fieldname2에 의한 파티션)'에 있다면 당신의 문제를 해결할 수있었습니다. 그러나 sqlserver8은 'count (distinct fieldname)'에 대한 오류를 줄 것이므로 여기에서 다른 접근 방식을 시도해야합니다. – Saju