Mhhhh!!! facile non è certamente
del resto la vita è bella perche è difficile ..........
Farlo solamente con SQL è un casino, certamente ci si arriverebbe ma diventa una roba accademica
ci potrebbe aiutare una funzione di Access che scorre i record in un recordset e da la risposta
dimentichiamoci dell'Id Univoco perche non siamo sicuri che sia progressivo con le date
abbiamo la nostra univocita nella coppia Nome + Data e ce la facciamo bastare
quindi data una tabella di nome T1 con i campi:
- Nome ---- Testo
- Data ----- DataOra
- Valore ---- Testo
creiamo in un modulo questa funzione personalizzata:
codice:
Option Compare Database
Option Explicit
Public Function ContaValori(Nomx As String) As Integer
Dim Valx As String
Dim Conx As Integer
Dim dbx As DAO.Database
Dim rs1 As DAO.Recordset
Set dbx = DBEngine(0)(0)
Set rs1 = dbx.OpenRecordset("SELECT Valore FROM T1 WHERE (Nome='" & Nomx & "') ORDER BY Data DESC;", dbOpenDynaset)
rs1.MoveFirst
Valx = rs1.Fields("Valore").Value
'Conx = 0
Do Until rs1.EOF
If Valx = rs1.Fields("Valore").Value Then
Conx = Conx + 1
Else
ContaValori = Conx
rs1.MoveLast
End If
rs1.MoveNext
Loop
On Error Resume Next
rs1.Close
dbx.Close
Set rs1 = Nothing
Set dbx = Nothing
End Function
adesso (con l'aiuto della funzione) la query diventa banale
codice:
SELECT
T1.Nome,
Max(T1.Data) AS MaxData,
ContaValori([Nome]) AS ContValor
FROM
T1
GROUP BY
T1.Nome,
ContaValori([Nome])
;
certamente da ottimizzare ma .......
Facci sapere
.