다음과 같은 자식 테이블이 있습니다.
[Cust Date Table]
| Customer ID | Some Date | Balance |
+-------------+------------+---------+
| 1 | 2012-04-30 | 20.00 |
| 1 | 2012-03-31 | 50.00 |
| 2 | 2012-04-30 | 0.00 |
| 2 | 2012-03-31 | 10.00 |
| 3 | 2012-03-31 | 60.00 |
| 3 | 2012-02-29 | 10.00 |
다음과 같은 결과 집합을 얻을 수 있기를 원합니다. 최신 날짜를 가진 각 클라이언트마다 하나의 레코드입니다.
| Customer ID | Some Date | Balance |
+-------------+------------+---------+
| 1 | 2012-04-30 | 20.00 |
| 2 | 2012-04-30 | 0.00 |
| 3 | 2012-03-31 | 60.00 |
다음 SQL (SQL Server 구문)을 사용하여 개별 "고객 ID"마다이 작업을 수행 할 수 있습니다.
select top 1 [Some Date], [Customer ID], [Balance]
from [Cust Date Table]
where [Customer ID] = 2
order by [Some Date] desc
| Customer ID | Some Date | Balance |
+-------------+------------+---------+
| 2 | 2012-04-30 | 0.00 |
그러나 원하는 세 가지 레코드를 모두 얻는 방법을 잘 모르겠습니다. 이것이 하위 쿼리 또는 다른 것을 요구하는 상황인지 확실하지 않습니다.
지정된 [고객 ID]마다 최대 날짜가 다를 수 있습니다 (이 예에서는 고객 3의 최대 날짜는 2012-03-31이지만 다른 레코드의 최대 날짜는 2012-04-30 임). 나는 시도했다
select [Customer ID], MAX([Some Date]) AS [Latest Date], Balance
from [Cust Date Table]
group by [Customer ID], Balance;
문제는 각 고객에 대해 한 행만 반환하지 않고 여러 행을 반환한다는 것입니다.