giovedì 29 marzo 2012

Query per dati registro cespiti di prova

La query di cui sotto restituisce gli stessi dati ( a dir la verità mi mancano le rivalutazioni/svalutazioni ) che vengono stampati durante la stampa di prova del registro cespiti

Dopo la stampa definitiva, la query deve essere rivista.

La query estrae i dati dettagliati per cespite. E' sufficiente utilizzare i subtotali di Excel per totalizzare per Categoria

PS. La query è fatta per ORACLE ( la variazioni per altri db sono semplici ) 

------------- Inizio Testo Query -----------------------------------------------
select  
c.categoria,cat.descrizion,c.codice,c.descrizion,
substr(datainiamm,7,2)||'/'||substr(datainiamm,5,2)||'/'||substr(datainiamm,1,4) Data_Ini_Amm,
case 
when acq.datareg is not null then
  substr(acq.datareg,7,2)||'/'||substr(acq.datareg,5,2)||'/'||substr(acq.datareg,1,4) 
end
  Data_Acq,
c.numfatfor,
substr(c.datafatfor,7,2)||'/'||substr(c.datafatfor,5,2)||'/'||substr(c.datafatfor,1,4) data_fatt_for, 
nvl(acq.eimporto,0) imp_acq,

c.evaloreini costo_sto,c.ebaseammor base_amm,
c.eresiduoam-nvl(amm.eimporto,0) residuo_amm, c.eimpnonamm non_amm,
c.etotaleamm+nvl(amm.eimporto,0) fondo_amm,
nvl(ali.eimporto,0) ali_anno,
nvl(amm.eimporto,0) amm_anno,
c.eplusval-c.eminusval plus_min,

c.eresiduocv-nvl(amm.eimpammciv,0) residuo_amm_civ,
c.eplusciv-c.eminusciv plus_min_civ,
c.efondociv+nvl(amm.eimpammciv,0) fondo_civ,
nvl(amm.eimpammciv,0) amm_civ_anno,

nvl(ali.etotaleamm,0) ali_anno_tot_fondo,
nvl(ali.eimpammort,0) ali_tot_costo_storico,
nvl(ali.etotammciv,0) ali_anno_tot_fondo_civ,

c.evaloreini-nvl(ali.eimpammort,0) netto_ali_costo_sto,
c.etotaleamm+nvl(amm.eimporto,0)-nvl(ali.etotaleamm,0) netto_ali_fondo_amm,
c.efondociv+nvl(amm.eimpammciv,0)-nvl(ali.etotammciv,0) netto_ali_fondo_amm_civ,

nvl(amm.eimporto,0) importo_amm,
nvl(amm.eimpammciv,0) importo_amm_civ,
nvl(AMm.Percamm,0) pct_amm,
nvl(AMm.Perc_civ,0) pct_civ

from 
( select * from cespiti
 where 1=1
 and codice is not null
 and ( 
 (datainiamm < '2012')
   or
 (exists ( select 1 from movce m1 where m1.categoria=cespiti.categoria and m1.codcespite=cespiti.codice and tipomov='A' and esereg='2011') 
 ))
 and (
 (alienat_sn='N') or
 ( alienat_sn='S' and exists ( select 1 from movce m1 where m1.categoria=cespiti.categoria and m1.codcespite=cespiti.codice and tipomov='L' and esereg='2011')
  )

 )
) c 
inner join siglapp.catbeni cat on c.categoria=cat.codice
left outer join (
select * from movce where esereg='2011'
and tipomov='M') amm
on c.categoria=amm.categoria
and c.codice=amm.codcespite
left outer join (
select * from movce where esereg='2011'
and tipomov='L') ali
on c.categoria=ali.categoria
and c.codice=ali.codcespite

left outer join (
select * from movce where esereg='2011'
and tipomov='A') acq
on c.categoria=acq.categoria
and c.codice=acq.codcespite
order by c.categoria,c.codice
------------- Fine Testo Query -----------------------------------------------