0
나는 세 개의 테이블과 이들로부터 다음 출력을 생성하는 쿼리를 가지고 있습니다. 각 필드에는 데모 목적으로 원의 테이블을 나타내는 문자가 앞에 붙습니다. 대신 가장 최근 데이터 만 포함 된 보고서입니다. 즉 MAX (EntryDate)와 함께 반환되는 행만 원하지만이를 수행하는 방법을 알 수는 없습니다. 나는 시도했다, HAVING
, 집계 등,하지만 성공과 함께. 내 접근 방식이 잘못되었거나 구문 론적으로 뭔가 빠졌습니다.각각 최대 날짜가있는 그룹별로 레코드 선택
s.ID r.FirstID m.ID m.PartNum m.Revision r.EntryDate
26 42 13 NULL A 2012-03-25 15:32:00
26 42 17 820044444 B 2012-03-27 09:48:00
26 42 14 820056789 C 2012-03-28 12:19:00
원하는 결과 : 약간의 추가 배경에 대한
s.ID r.FirstID m.ID m.PartNum m.Revision r.EntryDate
26 42 14 820056789 C 2012-03-28 12:19:00
는 r.FirstID 내가 단지를 반환 할 그래서 각각을 그룹화, 모두 서로 관련 기록의 그룹을 나타냅니다 가장 최근 데이터로 기록하십시오. 내 DBMS에 대한 SQL Server를 사용하고
select s.ID,r.FirstID,m.ID,m.PartNum,m.Revision,r.EntryDate from StatusLog s
left join (select FirstID,PartInfoID from Request where PartInfoID is not null group by FirstID,PartInfoID) r on s.FirstID= r.FirstID
--required filtering here? Or move this extra join to the inner query?
left join PartInfo m on r.PartInfoID = m.ID
:
는 여기에 지금까지 가지고 내 쿼리입니다.
아니요,이 사례는 특정 케이스에서만 작동합니다. 내 질문을 다시 읽으십시오. 나는 핵심 요점을 과장했다. 결과 세트, ** r.FirstID' 필드에 의해 결정된대로 ** 각 그룹 **에 대해 한 행을 리턴해야합니다. – Chiramisu
@Chiramisu OK, fixed :) ROW_NUMBER() GROUP BY에서 s.ID를 제거해야했습니다. 이것은 지금 작동해야합니다. 나는 또한 ORDER BY가 정확하지 않으므로 DESC로 변경했다. :) –
'ROW_NUMBER() OVER (GROUP BY')를 사용할 수 없다고 생각합니다.'ROW_NUMBER() OVER (PARTITION BY') – Arion