Newsgroup: it.comp.appl.access
Titolo: somma cumulativa in query

buongiorno,
ho provato a fare una somma cumulativa in una query ma da numeri al lotto 
(spero buoni! :) ).
 
la query è la seguente
 
SELECT rifiuti.[Data IN], DSum("volume","rifiuti","[data in]<=#" & [Data IN] 
& "#") AS S2
FROM rifiuti;
 
funziona fino a un certo punto poi fa cose del genere:
 
Data IN    S2
31/07/2015    5216
03/08/2015    480
03/08/2015    480
03/08/2015    480
03/08/2015    480
03/08/2015    480
03/08/2015    480
03/08/2015    480
03/08/2015    480
03/08/2015    480
08/09/2015    5616
21/09/2015    6082
 
cosa c'è che non va?
il DB pulito:
https://www.dropbox.com/s/pwj4nyiipjkanfy/sommac.accdb?dl=0
 
 
grazie
Akery
 
 
 
---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus
 
 

 
https://www.dropbox.com/s/pwj4nyiipjkanfy/sommac.accdb?dl=0
 
 
Sul mio sistema la tua query dà errori perché la data non è formatata. 
Se correggio la data non vedo i risultati che mostri sopra ma la somma 
cumulativa che è uguale per tutti record di un giorno. Nel tuo esempio 
sarebbe
 
 > 31/07/2015 5216
 > 03/08/2015 5696
 > 03/08/2015 5696
 > 03/08/2015 5696
ecc.
 
...che corrisponde perfettamente alla tua espressione. ;-)
Se invece vuoi una somma che cresce per riga puoi aiutarti con l'Id 
univoco che hai nella tabella. L'enunciato SQL potrebb'essere:
 
SELECT [Data IN], DSum("volume","rifiuti","[data in]<" & CLng([Data IN]) 
& " OR [data in]=" & CLng([Data IN]) & " AND Id<" & [Id]) AS S2
FROM rifiuti
ORDER BY [Data IN], ID
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 

 & " OR [data in]=" & CLng([Data IN]) & " AND Id<" & [Id]) AS S2
 
No, l'operatore nel criterio per l'Id dovrebb'essere: <=


 FROM rifiuti;
 
Non va bene, devi fare : 
 
SELECT rifiuti.[data in] AS G_data_in, Sum(rifiuti.volume) AS S_volume
FROM rifiuti
GROUP BY (rifiuti.[data in])
ORDER BY rifiuti.[data in];

 ORDER BY rifiuti.[data in];
 
Così fai la somma per giorno, non cumulativa.


 Così fai la somma per giorno, non cumulativa.
 
Ah, lui la vuole "cumulativa" ? Ossia progressiva ? Non l' avevo capito.
 
 

 
 
Grazie per le risposte, in effetti convertendo la data con la
 funzione clng tutto funziona correttamente.  Ma come si fa per
 capire che la data non č formattata correttamente?
 
-- 
akery
 
 
----Android NewsGroup Reader----
http://usenet.sinaapp.com/
 

   capire che la data non è formattata correttamente?
 
http://www.donkarl.com/it?FAQ6.8
 


 Grazie per le risposte,
 
avrei voluto aiutarti ma purtroppo non avevo afferrato quello che ti
serviva. Mi dispiace. 
 
Fortunatamente cè Karl ... :-) 


Buonasera ho seguito il post e mi e' stato di aiuto per il mio problema, ma non del tutto.
Mi spiego, per semplificare; ho una query con i seguenti campi IDMOV(PROGR), DATA (CRESCENTE),CONTO,DARE,AVERE e vorrei avere un ulteriore campo che mi calcoli il saldo progressivo. 
Ho inserito la seguente formula 
SALDO: DSum("[DARE]-[AVERE]";"[Q_MOV]";"[DATA]<" & CLng([DATA]) & "OR[DATA]=" & CLng([DATA]) & " And [IDMOV]<" & [IDMOV])
ma il saldo mi viene calcolato sulla riga successiva e non sulla stessa riga cioe'
DATA   IDMOV  CONTO  DARE  AVERE  SALDO    (IO VORREI) SALDO 
1/3    1      1101   50     0                          50
2/3    4      1101    0    30     50                   20
2/3    3      1101   55     0     20                   75
2/3    2      1101    0    15     75                   60
 
Come posso correggerlo?
Grazie in anticipo


Scusate ma mentre scrivevo ho pensato di aggiungere il simbolo = dopo il simbolo < per IDMOV e credo di aver risolto.


No dietrofront, il progressivo e' errato o meglio a volte calcola giusto fino ad una certa riga e poi sbaglia il calcolo.

L'espressione deve essere:
 
SALDO: DSum("[DARE]-[AVERE]";"[Q_MOV]";"[DATA]<" & CLng([DATA]))
 
sempre che la Q_MOV abbia già filtrato il CONTO.

 DSum("[DARE]-[AVERE]";"[Q_MOV]";"[DATA]<" & CLng([DATA]))
 
DSum("[DARE]-[AVERE]";"[Q_MOV]";"[DATA]<#" & [DATA] & "#))
 
Bruno


Sicuro vada bene la data così...?
Quella suggerita prima con clng(...), che hai "corretto", andava sicuramente bene... questa tua ho qualche serio dubbio...
 
Non è che così applica l'accezione anglosassone invertendo quindi Mese/Giorno, e serve mettere il Format("mm/dd ...",[Data])...?
 
Mah...
 
@Alex