Ho una tabella figlio che è qualcosa del genere:
[Tabella delle date dei cust]
| 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 |
Vorrei essere in grado di ottenere un set di risultati come questo: un record per ciascun cliente con la data più recente:
| Customer ID | Some Date | Balance |
+-------------+------------+---------+
| 1 | 2012-04-30 | 20.00 |
| 2 | 2012-04-30 | 0.00 |
| 3 | 2012-03-31 | 60.00 |
So che posso farlo per ogni singolo "ID cliente" con il seguente SQL (sintassi di SQL Server):
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 |
Ma non sono sicuro di come ottenere tutti e tre i record che voglio. Non sono sicuro che si tratti di una situazione che richiede una query secondaria o qualcos'altro.
Si noti che la data massima può essere diversa per qualsiasi [ID cliente] dato (in questo esempio, la data massima del cliente 3 è 31-03-2012, mentre gli altri record hanno una data massima del 30-04-2012). Ho provato
select [Customer ID], MAX([Some Date]) AS [Latest Date], Balance
from [Cust Date Table]
group by [Customer ID], Balance;
Il problema è che questo non restituisce solo una riga per ogni cliente, ma restituisce più righe.