각 그룹의 최신 항목을 얻고 싶은 테이블이 있습니다. 테이블은 다음과 같습니다.
DocumentStatusLogs
표
|ID| DocumentID | Status | DateCreated |
| 2| 1 | S1 | 7/29/2011 |
| 3| 1 | S2 | 7/30/2011 |
| 6| 1 | S1 | 8/02/2011 |
| 1| 2 | S1 | 7/28/2011 |
| 4| 2 | S2 | 7/30/2011 |
| 5| 2 | S3 | 8/01/2011 |
| 6| 3 | S1 | 8/02/2011 |
테이블은 DocumentID
DateCreated
내림차순 으로 정렬됩니다 . 각각에 대해 DocumentID
최신 상태를 원합니다.
내가 선호하는 결과물 :
| DocumentID | Status | DateCreated |
| 1 | S1 | 8/02/2011 |
| 2 | S3 | 8/01/2011 |
| 3 | S1 | 8/02/2011 |
각 그룹에서 최상위를 얻는 집계 함수가 있습니까? 아래 의사 코드를 참조하십시오
GetOnlyTheTop
.SELECT DocumentID, GetOnlyTheTop(Status), GetOnlyTheTop(DateCreated) FROM DocumentStatusLogs GROUP BY DocumentID ORDER BY DateCreated DESC
이러한 기능이 존재하지 않으면 원하는 출력을 얻을 수있는 방법이 있습니까?
- 또는 처음에는 정규화되지 않은 데이터베이스로 인해 발생할 수 있습니까? 나는 내가 찾고있는 것이 단지 한 행이기 때문에 생각하고있다.
status
때문에 부모 테이블에도 합니다.
자세한 내용은 부모 테이블을 참조하십시오.
현재 Documents
테이블
| DocumentID | Title | Content | DateCreated |
| 1 | TitleA | ... | ... |
| 2 | TitleB | ... | ... |
| 3 | TitleC | ... | ... |
상태에 쉽게 액세스 할 수 있도록 부모 테이블이 이와 같아야합니까?
| DocumentID | Title | Content | DateCreated | CurrentStatus |
| 1 | TitleA | ... | ... | s1 |
| 2 | TitleB | ... | ... | s3 |
| 3 | TitleC | ... | ... | s1 |
업데이트 방금 "적용"을 사용하여 이러한 문제를보다 쉽게 해결하는 방법을 배웠습니다.