Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    query con saldo parziale

    salve,
    vi spiego il mio problema.
    Ho una tabella di questo tipo:

    entrata uscita
    10 ....... 0
    10........ 0
    5.......... 0
    0.......... 7

    la mia query mi deve dare come risultato questo:
    entrata uscita saldo
    10......... 0..... 10
    10......... 0..... 20
    5........... 0..... 25
    0........... 7..... 18


    E' una cosa fattibile? e se sì in che modo??

    grazie.
    Ultima modifica di DUMAX; 31-01-2015 a 19:30

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova questo (x MySQL)

    codice:
    SELECT l.a, l.b, @SUM := @SUM + l.a - l.b AS somma
    FROM  tab1 l
    JOIN  (SELECT @SUM := 0) r;
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    credo che ti serva una query come quella alla risposta accettata
    http://stackoverflow.com/questions/1...s-partial-sums

    edit: che poi è quello che ti ha scritto badaze...

  4. #4
    Grazie per avermi risposto così velocemente.
    Sapete dirmi per caso se con firebird è uguale?
    grazie.

  5. #5
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    mai usato firebird,guarda questo link ma sinceramente non so se sia in tema
    http://asfernandes.blogspot.it/2010/...lative_24.html

  6. #6
    ho provato la stessa di mysql che Badaze mi aveva suggerito ma come previsto non ha funzionato.
    Non riesco a capire come porter far fare la stessa operazione in firebird.
    ogni possibile suggerimento è ben accetto :-)

  7. #7
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da DUMAX Visualizza il messaggio
    entrata uscita
    10 ....... 0
    10........ 0
    5.......... 0
    0.......... 7
    Manca una cosa importante, poi si potrà fare tutto

    Un campo univoco temporale ( o altro ) che dica con certezza a "Sql" cosa viene prima oppure dopo

    .

  8. #8
    leggendo sul qua e là ho trovato qualcosa che potrebbe fare al mio caso nel firebird però non riesco a capire.
    Vi scrivo di seguito la risposta ad una domanda come la mia (ometto di scrivere il forum da dove l'ho letto perché non so se potrei fare una violazione delle regole di html.it):

    ex.: fieldDEB - fieldCRED - fieldSALD ( fieldCALC will be fieldSALD, in case)

    in handle for fieldCALC (proprerty CALCFIELDS in Dataset):

    xxtbFieldCALC := xxtbFieldCALC + (-fieldDEB) + fieldCRED


    So, FieldCALC calculate the diference between to fields before.


    fieldDEB - fieldCRED - fieldCALC
    2000 0 2000
    0 1000 1000

    Praticamente viene usato un campo di calcolo, (FieldCALC) non capisco se devo aggiungere un campo al database o è una variabile o cosa...

  9. #9
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Il tuo problema è che pochi di "noi" conoscono firebird, ( io meno degli altri )

    ma se si tratta di un DB allora devi usare il linguaggio SQL che è sempre più o meno uguale,
    ( confesso che non capisco assolutamente quei tentativi di soluzione che abbozzi sopra )

    Prova con una di queste 2 possibilità scritte in un SQL abbastanza standard,
    vediamo se firebird ti restituisce almeno qualcosa,

    se si allora poi andremo a risolvere il problema dell'indice temporale che ti accennavo sopra
    codice:
    SELECT 
    T1.entrata, 
    T1.uscita, 
    (SELECT Sum(T2.entrata - T2.uscita) FROM Tabella AS T2 WHERE T2.entrata>=T1.entrata) AS Prog
    FROM 
    Tabella AS T1
    ORDER BY 
    T1.entrata DESC
    ;
    codice:
    SELECT 
    T1.entrata, 
    T1.uscita, 
    Sum(T2.entrata-T2.uscita) AS Prog
    FROM 
    Tabella AS T1 
    INNER JOIN 
    Tabella AS T2 
    ON 
    T1.entrata <= T2.entrata
    GROUP BY 
    T1.entrata, 
    T1.uscita
    ORDER BY 
    T1.entrata DESC
    ;
    Ultima modifica di nman; 02-02-2015 a 23:36

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.