Query per il calcolo della differenza rispetto al valore precedente

lunedì 18 ottobre 2010 - 16.57
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Windows XP  |  Visual Studio 2005  |  Access (.mdb)  |  Office 2007

Barabas Profilo | Junior Member

ho un database in access con una semplice tabella con 3 colonne:
ID riga, valore contatore, data e ora. La tabella è ordinata per data e ora.
vorrei aggiungere un'altra colonna con l'incremento del contatore rispetto al valori precedenti in ordine di tempo e vorrei creare una query di Update per calcolare tutti gli incrementi.
Purtroppo il mio SQL è un po' arrugginito, per ora ho provato una cosa del genere:

UPDATE tabella SET incremento = contatore -(Select contatore from tabella where dataora=(select Min dataora from tabella where dataora>dataora))

Ma chiaramente quel dataora>dataora non può funzionare, non so come differenziare la data e ora della riga corrente da quella delle righe successive.
Mi date una mano?
Grazie in anticipo
Barabas

boccia75 Profilo | Junior Member

Se il tuo problema è solo la differenziazione....beh prova così:

UPDATE tabella SET incremento = contatore -(Select contatore from tabella as A where A.dataora=(select Min B.dataora from tabella as B where B.dataora>A.dataora))

Poi non so quanto sia performante...
Ciao

Barabas Profilo | Junior Member

Grazie del suggerimento
adesso provo, e se funziona verifico anche la perfomance.

nel frattempo ho trovato questa nota della microsoft
http://support.microsoft.com/kb/210504/en-us
che usa la funzione DLookup().
Ma ancora non riesco a metterla in una query di update.
Barabas

Barabas Profilo | Junior Member

Ho provato con questa query
UPDATE tabella SET incremento = contatore -(Select contatore from tabella as A where A.dataora=(select Min B.dataora from tabella as B where B.dataora>A.dataora))
ma mi dice: "Per l’operazione è necessaria una query aggiornabile. "
guardando la guida di Access ho capito che l'errore dovrebbe pesentarsi perchè il risultato della sottoquery non è unico, anche se non so perchè.

Invece ho provato con con la funzione DLookUp e funziona, solo che necessita di un campo ID numerico ordinato e senza nessun valore mancante, cosa che io non ho. Ho la data, ma questa funzione non funziona con la data.
Barabas
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5