I have a SQL Database which store the value as YTD acorss all the periods and other fields . However for the reporting purpose , I would like to convert into MTD . We have huge amount of data store .approx size of a table around 8GB.
I have wrote a T-SQL Query to convert the data . For small set of data I can see it is converting and give me the correct result . However when I ran for full data, it taken ages . It has ran for 12 hrs and still not getting the results . May be there is some twicking or any other method required for Huge Data ?
Query Which I have used .
WITH
TBLDIFFERENCEAS
(
SELECT
ROW_NUMBER()OVER(ORDERBYCOD_PERIODO)ASROWNUMBER
,COD_PERIODOASPERIOD
,COD_CONTOASCOA
,COD_SCENARIOASSCENARIO
,LEFT(COD_AZIENDA,3)ASDATAAREAID
,COD_DEST1ASDIMENSION3_
,SUBSTRING(COD_DEST2,6,3)ASDIMENSION
,COD_DEST3ASDIMENSION7_
,COD_DEST5ASDIMENSION4_
,COD_VALUTAASCURRENCY
,SUM(IMPORTO)ASPOINTVALUE
FROM
DATI_SALDI_LORDIWHERELEFT(COD_SCENARIO,4)='2014'ANDCOD_CONTOIN(SELECTCOD_CONTOFROMCONTOWHERENATURA_CONTOIN('E','P'))
AND
COD_AZIENDAIN('AE1')
GROUP
BYCOD_PERIODO,COD_CONTO,COD_SCENARIO,COD_DEST1,COD_DEST2,COD_DEST3,COD_DEST5,COD_VALUTA,COD_AZIENDA
)
SELECT
CUR.PERIODASPERIOD
,CUR.SCENARIO,CUR.COA,CUR.DATAAREAID,CUR.DIMENSION3_,CUR.DIMENSION,CUR.DIMENSION7_,CUR.DIMENSION4_,CUR.CURRENCY
,CASEWHENCUR.PERIOD='01'THENCUR.POINTVALUEELSE CUR.POINTVALUE-PRV.POINTVALUEENDASAMOUNT
,GETDATE()
FROM
TBLDIFFERENCECURLEFTOUTERJOINTBLDIFFERENCEPRV
ON
CUR.ROWNUMBER=PRV.ROWNUMBER+1
ORDER
BYCUR.PERIOD