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?