Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    339

    [sql Server 2000] Report Con Colonne Somma

    Ciao a tutti, volevo sapere come voi fareste un Report con 14 colonne somma, ma andiamo con ordine cosi vi spiego meglio.

    Ho un tabella che chiamerà TABELLA A con 200.000 righe, all'interno di questa tabella ho varie colonne per esempio

    Città
    Province
    Comune
    N Abitanti
    Causale

    Quello che dovrei ottenere io è una group by di Città Province Comune, e per ogni riga devo aggiungere delle colonne somme che sono basate sulle causali.
    Per esempio:


    Città
    Province
    Comune
    SUM(Abitanti X)
    SUM(Abitanti Y)
    SUM(Abitanti Z)
    SUM(Abitanti D)


    le varie somme sono date per esempio:
    SUM(Abitanti X) - Somma tutti gli abitanti causale = 50
    SUM(Abitanti Y) - Somma tutti gli abitanti causale =100
    SUM(Abitanti Z) - Somma tutti gli abitanti causale = 10
    SUM(Abitanti D) - Somma tutti gli abitanti causale = 30

    Cosi via per un totale di 14 colonne somme e ognuna di essa è data da una causale diversa.

    Io per fare questo ho creato un tabella Temporanea data dalla Group By Città,Province,Comune + 14 Colonne somme che hanno come valore iniziale NULL.

    Poi questa tabella temporanea lo ciclata con un Ciclo WHILE e per ogni riga sono andato a recuperare con delle select i vari valore delle SUM
    ESEMPIO:

    SELECT @RecordCnt = COUNT(ID_FLUSSO) FROM @TABELLA_A

    WHILE (@COUNT <= @RecordCnt)

    BEGIN

    SELECT
    Città = Città,
    Province = Province,
    Comune = Comune
    FROM @TABELLA_A
    WHERE ID_FLUSSO = @COUNT

    (SELECT @SUMABITANTI_X = SUM(N Abitanti)
    FROM TABELLA A as TabellaInterna
    WHERE
    TabellaInterna.Città = @Città
    AND TabellaInterna.Province =@Province
    AND TabellaInterna.Comune =@Comune
    AND TabellaInterna.Causale = 50


    (SELECT @SUMABITANTI_T = SUM(N Abitanti)
    FROM TABELLA A as TabellaInterna
    WHERE
    TabellaInterna.Città = @Città
    AND TabellaInterna.Province =@Province
    AND TabellaInterna.Comune =@Comune
    AND TabellaInterna.Causale = 100

    ecc.

    Per ogni riga poi faccio UPDATE

    UPDATE TABELLA_A
    SET Abitanti X = SUMABITANTI_X
    Abitanti Y = SUMABITANTI_Y
    Abitanti Z = SUMABITANTI_Z
    Abitanti D = SUMABITANTI_D
    WHERE
    TabellaInterna.Città = @Città
    AND TabellaInterna.Province =@Province
    AND TabellaInterna.Comune =@Comune


    END

    a Fine ciclo faccio la Select della tabella


    SELECT * FROM TABELLA_A
    .


    Questo riportato è un esempio ma spero che si capisce cosa ho fatto, voi come lo avreste fatto?
    Ci sono 10 categorie di persone al mondo: quelle che capiscono
    il sistema binario e quelle che non lo capiscono.

  2. #2
    potresti mettere anche la causale nella temp, poi fare un'unica update join

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    339
    le causali cambiano per ogni colonna somma, non sono uguali come puoi vedere.
    Ci sono 14 colonne somma con 14 causali diverse
    Ci sono 10 categorie di persone al mondo: quelle che capiscono
    il sistema binario e quelle che non lo capiscono.

  4. #4
    ok, giusto. puoi comunque evitare il loop facendo (come fai già) 14 update join. altrimenti (ma non è che risparmi molto) una temp in verticale, poi pivot (da SQL 2005 in poi)

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    339
    La pivot ha una where unica, scrivi tu come fai a fare delle SUM con where condition differenti per ogni sum.

    Perchè io ci ho provato
    Ci sono 10 categorie di persone al mondo: quelle che capiscono
    il sistema binario e quelle che non lo capiscono.

  6. #6
    se fai la group by sia con la località che con la causale dovresti farcela

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    339
    prova a scrivermi come faresti, cosi capisco
    a livello pratico
    Ci sono 10 categorie di persone al mondo: quelle che capiscono
    il sistema binario e quelle che non lo capiscono.

  8. #8
    posta la query originale (quella che crea la temp - non la vedo nel primo post) che la si modifica

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    339
    il problema secondo me è che per esempio alcune colonne Somma sono date da più causali.
    Ci sono 10 categorie di persone al mondo: quelle che capiscono
    il sistema binario e quelle che non lo capiscono.

  10. #10

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.