codice:
FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 13
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 6
                                                 AND ROWNUM < 14
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 14
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 7
                                                 AND ROWNUM < 15
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 15
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 8
                                                 AND ROWNUM < 16
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 16
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 9
                                                 AND ROWNUM < 17
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 17
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 10
                                                 AND ROWNUM < 18
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 18
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 11
                                                 AND ROWNUM < 19
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 19
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 12
                                                 AND ROWNUM < 20
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 20
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 13
                                                 AND ROWNUM < 21
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 21
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 14
                                                 AND ROWNUM < 22
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 22
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 15
                                                 AND ROWNUM < 23
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 23
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 16
                                                 AND ROWNUM < 24
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 24
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 17
                                                 AND ROWNUM < 25
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 25
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 18
                                                 AND ROWNUM < 26
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 26
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 19
                                                 AND ROWNUM < 27
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 27
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 20
                                                 AND ROWNUM < 28
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 28
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 21
                                                 AND ROWNUM < 29
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 29
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 22
                                                 AND ROWNUM < 30
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             WHEN ROWNUM = 30
                THEN (SELECT xx
                        FROM (SELECT ROUND
                                        (AVG (CASE
                                                 WHEN ROWNUM > 23
                                                 AND ROWNUM < 31
                                                    THEN ripetuti
                                              END
                                             ),
                                         0
                                        ) AS xx
                                FROM totale.tot)
                       WHERE xx IS NOT NULL)
             ELSE 0
          END AS rolling
     FROM totale.tot
Vorrei portare il tutto in una procedura che sicuramente non richiedera' tutto sto codice ma con due for credo si risolva. Purtroppo non sono in grado di generarla, e proprio per questo spero di trovare un anima pia che mi aiuti e mi illumini un pò. Come potete vedere il risultato che voglio gia' lo ottengo. Grazie a tutti ciao!