Newsgroup: it.comp.appl.access
Titolo: Query a somme parziali su gruppi di categorie

Aloa a tutti!
Ho un problemuccio in cui mi sono incagliato ormai da 3 giorni da 
sottoporre alla vostra autorevole saggezza prospera di nerboruti 
consigli e folti suggerimenti:
Ho un calcolo complesso dal quale dovrebbe uscire un report e 
successivamente essere aggiornate delle tabelle dal quale il calcolo è 
partito.
Mi spiego meglio:
Ho una cifra (80.000 €) che dovrebbe essere pagata a 100 persone 
supponiamo. Queste persone sono raggruppate secondo dei privilegi che 
spettano su quella somma. La cifra che deve essere pagata all'ultima 
categoria di privilegio e che non riesce a coprire la richiesta, verrà 
pagata con un coefficente uguale per tutti i creditori così da garantire 
la par condicio.
Il quadro che mi si presenta è il seguente:
somma da pagare: 80.000€
GRADO DaPagare Persone
01     	10.000    10
02      20.000    20
03      10.000    10
04      60.000    60
io vorrei dei risultati parziali con i quali procedere nei miei conteggi 
al fine di determinare la percentuale di soddisfazione degli ultimi 
creditori.
Somma Parziale Da Pagare=SPDP
GRADO DaPagare Persone SPDPagare
01     	10.000    10    10.000
02      20.000    20    30.000
03      10.000    10    40.000
04      60.000    60    40.000
così alla classe 04 deve corrispondere il 66% dei loro crediti.
Chi mi può aiutare a comporre questa query? o almeno indirizzare sulla 
giusta strada!
Aiutoooo!
Marino

 ha scritto nel messaggio
news:bebork$tag$1...@newsreader.mailgate.org...

Ciao Marino
Una delle possibili soluzioni ...
-------------------
SELECT
     Grado,
     DaPagare,
     Persone,
    (Select Sum(DaPagare)
     FROM Pag P1
    Where P1.Grado<=Pag.Grado)  AS Progressivo,
    IIF(80000-Progressivo>0,
          Progressivo,
          80000- (Select Sum(DaPagare)
          FROM Pag P1
          Where P1.Grado<Pag.Grado))  AS SPDaPagare
FROM
   Pag
WHERE
  80000-Nz( (Select Sum(DaPagare)
                FROM Pag P1
                Where P1.Grado<Pag.Grado),0)>0
ORDER BY Grado
----------------------
Ciao Giorigo

Grazie mille Giorgio! sia per la tempestività che per la chiarezza della 
soluzione.
Ho un solo dubbio sulla nomenclatura: P1=Sottoquery Pag=MiaQuery , o no?
Comunque provo subito e grazie ancora!
Ciao

 ha scritto nel messaggio
news:bec14h$coq$4...@newsreader.mailgate.org...

Ciao Leoniglio
Pag è il nome della tabella o della query di origine, P1 è un alias ed è
indispensabile per non confonderlo con la tabella principale.
I nomi dei campi li ho mantenuti uguali quindi devi solo sostituire Pag con
il nome della tua tabella o tua Query.
Ciao Giorgio.

     Where P1.Grado<=Pag.Grado*)  AS Progressivo,
Pag.Grado*
non riesco a dirgli che Pag.Grado sia il campo su cui operare la query. 
Mi chiede sempre di immettere un valore parametrico....
Questa  č la mia query:
SELECT INSINUAZIONI.CodGradoAmm, Sum(INSINUAZIONI.ImportoAmm) AS 
SommaDiImportoAmm, (Select Sum(SommaDiImportoAmm)     FROM 
ImportoGradoAmm P1    Where P1.CodGradoAmm<= 
ImportoGradoAmm.CodGradoAmm) AS Progressivo

 ha scritto nel messaggio
news:bec5ev$k9s$6...@newsreader.mailgate.org...

Ciao
Facciamo cosě
Postami la select semplice dalla tua tabella perchč da quel che leggo
sembrerebbe INSINUAZIONI ma poi vedo l'alias P1 sulla tabella
ImportoGradoAmm ???  (dopo FROM viene sempre il nme della tabella o query) e
quindi non capisco o forse sono due tabelle correlate ???
Quindi dovresti postare qualcosa del genere
SELECT
    CodGradoAmm,
    ImportoAmm
FROM
    INSINUAZIONI
Poi ti posto la query completa.
(Ps c'č un piccolo errore nella query che ti ho suggerito ta la riposterň
non appena mi darai risposta.)
Ciao Giorgio.

 Ciao Giorgio.
Ecco il mio campo nella query "RipartoCalcolo" in cui vi è la query 
"ImportoGradoAmm".
Progressivo: (Select Sum(ImportoGradoAmm.sommadiImportoAmm) FROM 
ImportoGradoAmm P1 Where P1.CodGradoAmm<=ImportoGradoAmm.CodGradoAmm )
Adesso va un po' meglio nel senso che mi mostra delle somme ma che sono 
errate:
grado DaPagare SommaParziale
2     100      100
7     200      400
10    100      300
11    400      1600
nel senso che access moltiplica l'importo da pagare per il numero 
progressivo (da lui immaginato!) di record: 1*100, 2*200, 3*100, 4*400 ecc..
Devo capire il perchè e poi credo che si risolva!
Grazie ancora, Giorgio, ti sarò debitore!

 ha scritto nel messaggio
news:bec9qb$qvm$1...@newsreader.mailgate.org...

Ciao
Ti Riposto la query , la precedente aveva un errore dove ci sono gli
asterischi.
-------------------
SELECT
     Grado,
     DaPagare,
     Persone,
    (Select Sum(DaPagare)
     FROM Pag P1
    Where P1.Grado<=Pag.Grado)  AS Progressivo,
    IIF(80000-Progressivo>0,
          DaPagare,  **********
          80000- (Select Sum(DaPagare)
          FROM Pag P1
          Where P1.Grado<Pag.Grado))  AS SPDaPagare
FROM
   Pag
WHERE
  80000-Nz( (Select Sum(DaPagare)
                FROM Pag P1
                Where P1.Grado<Pag.Grado),0)>0
ORDER BY Grado
----------------------
Ciao Giorgio.

> Grazie ancora, Giorgio, ti sarò debitore!
Ok, tutto a posto dopo una bella vasca di sudore...!
Sei stato illuminante! Se passi da Monza ti offro un cocktail!


Humm!! ci metto 15 minuti da Besana in Brinaza
Ciao Giorgio.