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
certamente da ottimizzare ma .......codice:SELECT T1.Nome, Max(T1.Data) AS MaxData, ContaValori([Nome]) AS ContValor FROM T1 GROUP BY T1.Nome, ContaValori([Nome]) ;
Facci sapere
.


Rispondi quotando