Ben böyle bir şey bir çocuk tablo var:
[Müşteri Tarihi Tablosu]
| 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 |
Ben böyle bir sonuç kümesi elde etmek istiyorum - en son tarih ile her müşteri için bir kayıt:
| Customer ID | Some Date | Balance |
+-------------+------------+---------+
| 1 | 2012-04-30 | 20.00 |
| 2 | 2012-04-30 | 0.00 |
| 3 | 2012-03-31 | 60.00 |
Aşağıdaki SQL (SQL Server sözdizimi) ile her bir "Müşteri Kimliği" için bunu yapabileceğini biliyorum:
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 |
Ama istediğim üç kaydın nasıl alınacağından emin değilim. Bunun bir alt sorgu veya başka bir şey için çağrılan bir durum olup olmadığından emin değilim.
Maksimum tarihin belirli bir [Müşteri Kimliği] için farklı olabileceğini lütfen unutmayın (bu örnekte müşteri 3'ün maksimum tarihi 2012-03-31, diğer kayıtların maksimum tarihi 2012-04-30'dur). denedim
select [Customer ID], MAX([Some Date]) AS [Latest Date], Balance
from [Cust Date Table]
group by [Customer ID], Balance;
Sorun, bu her müşteri için yalnızca bir satır döndürmüyor - birden fazla satır döndürüyor.