Antiguedad de saldos, 30,60,90, mas
Publicado por Erasmo (15 intervenciones) el 15/06/2012 23:34:31
Hola a todos.
Estoy usando sql 2005 y necesito hacer un query que me presente las facturas de los clientes que estan por cobrar segun la cantidad de dias, es decir para clasificarlos segun su antiguedad, sumando todos los montos por cobrar de un mismo cliente a 30 dias, 60 dias, 90 dias o mas dias. Por ejemplo si el cliente X debe 3 facturas desde hace 30 dias esos tres montos debe ser sumados y colocados en la columna de 30 dias del query y si ese mismo clientes tienes otras facturas con mas dias que estos montos sean presentados en la columna correspondiente, todo en una misma linea y asi para todos los clientes.
Este es el query que estoy usando
select CodigoCliente,sum(totalfactura)TotalFactura,
case when datediff(d,fechafactura,'13/06/2012') BETWEEN 0 and 30 then TotalFactura end '1-30',
case when datediff(d,fechafactura,'13/06/2012') BETWEEN 31 and 60 then TotalFactura end '31-60',
case when datediff(d,fechafactura,'13/06/2012') BETWEEN 61 and 90 then TotalFactura end '61-90',
case when datediff(d,fechafactura,'13/06/2012') BETWEEN 91 and 9999 then TotalFactura end '91 o Mas'
from encfactura
where year(fechafactura) = 2012
group by CodigoCliente,
case when datediff(d,fechafactura,'13/06/2012') BETWEEN 0 and 30 then TotalFactura end,
case when datediff(d,fechafactura,'13/06/2012') BETWEEN 31 and 60 then TotalFactura end,
case when datediff(d,fechafactura,'13/06/2012') BETWEEN 61 and 90 then TotalFactura end,
case when datediff(d,fechafactura,'13/06/2012') BETWEEN 91 and 9999 then TotalFactura end
order by CodigoCliente
El resultado que estoy obtenidon con este query es el siguiente:
CodigoCliente | TotalFactura | 1-30 | 31-60 | 61-90 | 91 o Mas
392 | 47500.00 | 0.00 | 0.00 | 0.00 | 47500.00
392 | 1425.00 | 0.00 | 0.00 | 1425.00 | 0.00
392 | 79520.00 | 0.00 | 0.00 | 79520.00 | 0.00
Si se fijan el cliente 392 tiene dos montos en el rango de 61-90, estos dos rangos en lugar de aparecer en lineas separadas deberian estan sumados en una misma linea. El resultado que deseo obtener es el siguiente:
CodigoCliente | TotalFactura | 1-30 | 31-60 | 61-90 | 91 o Mas
392 | 128445.00 | 0.00 | 0.00 | 80945.00 | 47500.00
De forma tal que me muestre en una misma linea los montos acumulados segun en rango de dias por cliente para cada rango y asi para todos los clientes.
Agradecere cualquier ayuda que me puedan prestar.
Estoy usando sql 2005 y necesito hacer un query que me presente las facturas de los clientes que estan por cobrar segun la cantidad de dias, es decir para clasificarlos segun su antiguedad, sumando todos los montos por cobrar de un mismo cliente a 30 dias, 60 dias, 90 dias o mas dias. Por ejemplo si el cliente X debe 3 facturas desde hace 30 dias esos tres montos debe ser sumados y colocados en la columna de 30 dias del query y si ese mismo clientes tienes otras facturas con mas dias que estos montos sean presentados en la columna correspondiente, todo en una misma linea y asi para todos los clientes.
Este es el query que estoy usando
select CodigoCliente,sum(totalfactura)TotalFactura,
case when datediff(d,fechafactura,'13/06/2012') BETWEEN 0 and 30 then TotalFactura end '1-30',
case when datediff(d,fechafactura,'13/06/2012') BETWEEN 31 and 60 then TotalFactura end '31-60',
case when datediff(d,fechafactura,'13/06/2012') BETWEEN 61 and 90 then TotalFactura end '61-90',
case when datediff(d,fechafactura,'13/06/2012') BETWEEN 91 and 9999 then TotalFactura end '91 o Mas'
from encfactura
where year(fechafactura) = 2012
group by CodigoCliente,
case when datediff(d,fechafactura,'13/06/2012') BETWEEN 0 and 30 then TotalFactura end,
case when datediff(d,fechafactura,'13/06/2012') BETWEEN 31 and 60 then TotalFactura end,
case when datediff(d,fechafactura,'13/06/2012') BETWEEN 61 and 90 then TotalFactura end,
case when datediff(d,fechafactura,'13/06/2012') BETWEEN 91 and 9999 then TotalFactura end
order by CodigoCliente
El resultado que estoy obtenidon con este query es el siguiente:
CodigoCliente | TotalFactura | 1-30 | 31-60 | 61-90 | 91 o Mas
392 | 47500.00 | 0.00 | 0.00 | 0.00 | 47500.00
392 | 1425.00 | 0.00 | 0.00 | 1425.00 | 0.00
392 | 79520.00 | 0.00 | 0.00 | 79520.00 | 0.00
Si se fijan el cliente 392 tiene dos montos en el rango de 61-90, estos dos rangos en lugar de aparecer en lineas separadas deberian estan sumados en una misma linea. El resultado que deseo obtener es el siguiente:
CodigoCliente | TotalFactura | 1-30 | 31-60 | 61-90 | 91 o Mas
392 | 128445.00 | 0.00 | 0.00 | 80945.00 | 47500.00
De forma tal que me muestre en una misma linea los montos acumulados segun en rango de dias por cliente para cada rango y asi para todos los clientes.
Agradecere cualquier ayuda que me puedan prestar.
Valora esta pregunta
0