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?

Rispondi quotando