Newsgroup: it.comp.lang.visual-basic
Titolo: SQL (Difficilotto)

 somma progressiva dei voti ???
        SELECT
            x_Chris.Cognome
          , x_Chris.Data
          , Sum(x_Chris.Voto) AS SommaDiVoto
          , Sum(x_Chris.Voto)
          + Val
            (
              ""
            & (
                SELECT
                    Sum(TEMP1.Voto) AS SommaDiVoto
                FROM
                    x_Chris AS TEMP1
                GROUP BY
                    TEMP1.Cognome
                  , TEMP1.Data
                HAVING
                    TEMP1.Cognome=x_Chris.Cognome
                    AND
                    TEMP1.Data<x_Chris.Data
                ORDER BY
                    x_Chris.Cognome
                  , x_Chris.Data
              )
            )
            AS SommaProgressivaDiVoto
        FROM
            x_Chris
        GROUP BY
            x_Chris.Cognome
          , x_Chris.Data
        ORDER BY
            x_Chris.Cognome
          , x_Chris.Data
        ;
OUTPUT
Cognome Data       SommaDiVoto SommaProgressivaDiVoto
Rossi   10/08/2002 4           4
Rossi   12/08/2002 2           6
Verdi   10/08/2002 2           2
Verdi   11/08/2002 5           7
SE&O!
--
Ciao :-)
Maurizio
--------
?SPQR(C)
 X
--------


[CUT]
riscrivi la query cosi':
SELECT x_Chris.Cognome,
x_Chris.Data,
Sum(x_Chris.Voto) AS SommaDiVoto,
Sum(x_Chris.Voto) + Val('' & (SELECT Sum(TEMP1.Voto)  FROM x_Chris AS TEMP1
 WHERE  TEMP1.Cognome=x_Chris.Cognome AND
                TEMP1.Data<x_Chris.Data)) AS SommaProgressivaDiVoto
FROM x_Chris
GROUP BY x_Chris.Cognome, x_Chris.Data
ORDER BY x_Chris.Cognome, x_Chris.Data;
a me cosi' funziona!
HTH
bye
R

 a me cosi' funziona!
    Anche a me. Grazie Nerone.


 la tua soluzione č a dir poco portentosa,
    Non esageriamo. Fai un giro nella guida dove si parla di "sottoquery".



grazie e te!
mi suno intruffolato perche' la cosa mi interessava.
la tua soluzione e' stata _registrata_ per utilizzi futuri. ;-))
bye
R

 ha scritto nel messaggio
news:alvua8$1idgi$1...@ID-52090.news.dfncis.de...


 ha scritto nel messaggio
news:alvua8$1idgi$1...@ID-52090.news.dfncis.de...


 ha scritto nel messaggio
news:alvua8$1idgi$1...@ID-52090.news.dfncis.de...


 ha scritto nel messaggio
news:alvua8$1idgi$1...@ID-52090.news.dfncis.de...


 ORDER BY x_Chris.Cognome, x_Chris.Data;
Io questa query la scriverei cosi':
SELECT  X_CHRIS.COGNOME, X_CHRIS.DATA, SUM(X_CHRIS.VOTO) AS Voto,
     (SELECT SUM(ALIAS_X_CHRIS.VOTO)
      FROM X_CHRIS AS ALIAS_X_CHRIS
      WHERE ALIAS_X_CHRIS.COGNOME = X_CHRIS.COGNOME AND
      ALIAS_X_CHRIS.DATA <= X_CHRIS.DATA
     ) AS [SommaProg Voto]
FROM X_CHRIS
GROUP BY X_CHRIS.COGNOME, X_CHRIS.DATA
ORDER BY X_CHRIS.COGNOME, X_CHRIS.DATA
Scritta cosě, infatti, si evitano i ritorni NULL e funziona anche in SQL
Server.

 Server.
    Grazie.
    Pero' non ho capito la questione dei "ritorni NULL".


     Pero' non ho capito la questione dei "ritorni NULL".
Ciao Maurizio. La tua query:
SELECT x_Chris.Cognome,x_Chris.Data,Sum(x_Chris.Voto) AS 
SommaDiVoto,Sum(x_Chris.Voto) + Val('' & (SELECT Sum(TEMP1.Voto)...ecc.
per problemi di sintassi non funziona in SQL Server (v. VAL) e, dopo gli 
opportuni adattamenti, restituisce dei NULL. Eccone un esempio:
Cognome   Data                     SommaDiVoto SommaProgressivaDiVoto
--------- ------------------------ ----------- ----------------------
Rossi     2002-08-10 00:00:00.000  4           NULL
Rossi     2002-08-12 00:00:00.000  2           6
Verdi     2002-08-10 00:00:00.000  2           NULL
Verdi     2002-08-11 00:00:00.000  1           3
Verdi     2002-08-12 00:00:00.000  4           7
Ciò perchè il valore del campo SommaDiVoto che dovrebbe precedente il 
primo di ciascun gruppo evidentemente non esiste. Io nella mia query, 
invece, uso un approccio diverso nella subquery come sicuramente avrai 
già notato (v. condizione <= sul campo Data).
Ciao.

 SommaDiVoto,Sum(x_Chris.Voto) + Val('' & (SELECT Sum(TEMP1.Voto)...ecc.
[...]
    Grazie. Tutto chiaro.
