oracle11g - Oracle Incremental Percent -
i trying make query return this:
<pre> codigo_vendedor anio monto %inc 100 2014 23 100 2015 26.50 15.22% 200 2014 20 200 2015 575 2775.00% <pre>
this incremental percentaje, problem having calculate %inc column, current query:
with ventas_anuales ( select c.codigo_vendedor, sum(d.precio*d.cantidad) monto, extract( year f.fecha) anio detalle d inner join factura f on f.serie = d.serie , f.numero = d.numero inner join clientes2 c on c.codigo_cliente = f.codigo_cliente group c.codigo_vendedor, extract( year f.fecha) order c.codigo_vendedor, extract( year f.fecha) ) select va.codigo_vendedor, va.anio, to_char(va.monto,'9999.99') monto, concat(to_char((va.monto*100/va.monto)-100,'9999.99'),'%') "%inc" ventas_anuales va;
and obviosly can columns, except incremental percentaje year:
but not know how calculate last column.
thank in advance.
regards
try use analytic function last monto in same row current monto :
lag(monto) on (partition codigo_vendedor order anio) p_monto
and put in additional outer select :
select codigo_vendedor ,anio ,monto ,lag(va.monto) on (partition va.codigo_vendedor order va.anio) p_monto ...
in main select add following expression , alias :
select ,va.codigo_vendedor ,va.anio ,to_char(va.monto,'9999.99') monto ,((va.monto-va.p_monto)/va.p_monto)*100 || '%' "%inc" ...
full query :
ventas_anuales ( select codigo_vendedor ,anio ,monto ,lag(va.monto) on (partition va.codigo_vendedor order va.anio) p_monto ( select c.codigo_vendedor ,sum(d.precio*d.cantidad) monto ,extract( year f.fecha) anio detalle d inner join factura f on f.serie = d.serie , f.numero = d.numero inner join clientes2 c on c.codigo_cliente = f.codigo_cliente group c.codigo_vendedor, extract( year f.fecha) ) ) select ,va.codigo_vendedor ,va.anio ,to_char(va.monto,'9999.99') monto ,((va.monto-va.p_monto)/va.p_monto)*100 || '%' "%inc" ventas_anuales va order va.codigo_vendedor, va.anio;
Comments
Post a Comment