none
ayuda con consultas, liquidacion de cuenta corriente sql server 2008 RRS feed

  • Pregunta

  • hola, me gustaría que me auxiliaran en este tema, ya que soy un novato en esto.

    pretendo hacer una liquidación de cuenta corriente mensual

    tengo esta consulta

    create procedure mov_prod
    @cla_prod int,
    @de date,
    @hasta date
    as
    select clv_Nom,NombreConcepto,fecha,monto  from tb_Saldos a,tb_Movimientos b, tb_ConceptosCuentaCorriente c where a.clv_Con=c.cveConcepto and a.clv_Mov=b.clv_mov and a.clv_Nom=@cla_prod and fecha between @de and @hasta
    go

    exec mov_prod 1,'03/01/2013','03/30/2013'

    y me arroja lo siguiente:

    clv_Nom|  NombreConcepto    | fecha             | monto

    1           |  Compra de semilla  | 2013-03-10   | 300.00

    1           |  Refacciones             | 2013-03-02   | 540.00

    1           |  Fertilizante              | 2013-03-20   | 500.00


    y no se como calcular los dias que hay entre las fechas para poder realizar el calculo como en este ejemplo:


    Fecha  |Movimiento            |cuantia |signo|saldos  |signo|dias|numero acreedores    |

    06-05  | ingreso apertura  | 35000 | H      |35000   | H    | 8    |   280000                    |

    14-05  |ch./ comp. s/f         |20000 |  H      |55000   | H   | 9     |  495000                    |                

    23-05  |cheque c./c            | 5000  |  D      |50000   | H   | 19    |  950000                    |

    11-06  |ingreso efectivo     |10000 |  H     |60000    | H   | 19    | 1140000                   |

    30-06  |                              |           |          |             |       | 55    | 2895000                   |


    miércoles, 6 de noviembre de 2013 20:40

Respuestas

  • Proba esto:

    Create Table #T (clv_Nom Int,
    				NombreConcepto NVarchar(50),
    				fecha DATE,
    				monto Decimal(10,2));
    
    Insert
    Into	#T
    Values	(1,'Compra de semilla','2013-03-10',300.00),
    		(1,'Refacciones','2013-03-02',540.00),
    		(1,'Fertilizante','2013-03-20',500.00);
    
    With T As
    (Select	Row_Number() Over(Order By fecha) N,
    		*
    From	#T)
    Select	T1.*,
    		DateDiff(Day,T1.Fecha,T2.Fecha)*T1.Monto MontoTotal
    From	T T1
    Left Join T T2
    		On T1.N=T2.N-1;


    El castellano no es mi lengua materna. Discúlpenme por los errores gramaticales, y, si pueden, corríjanme en los comentarios, o por correo electrónico. ¡Muchas gracias! Blog: http://about.me/GeriReshef

    • Marcado como respuesta jose_rod94 jueves, 7 de noviembre de 2013 20:45
    jueves, 7 de noviembre de 2013 20:31

Todas las respuestas

  • Cuál es la versión del SQL Server de tu servidor?
    (Utilice la instrucción Select @@Version;)

    El castellano no es mi lengua materna. Discúlpenme por los errores gramaticales, y, si pueden, corríjanme en los comentarios, o por correo electrónico. ¡Muchas gracias! Blog: http://about.me/GeriReshef

    jueves, 7 de noviembre de 2013 6:44
  • Me Mostro esto:

    Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64)   Mar 29 2009 10:11:52   Copyright (c) 1988-2008 Microsoft Corporation  Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) 

    jueves, 7 de noviembre de 2013 19:26
  • A ver si no entendí mal:

    DATEDIFF(dd, @de, @hasta)

    eso te sirve? 

    DATEDIFF (Transact-SQL)

    Saludos.

    jueves, 7 de noviembre de 2013 19:34
  • gracias por tu respuesta

    amm no, quiero calcular la diferencias de fechas que hay entre las filas

    es decir cuantos dias hay de 02/03 al 10/03 son 8 dias, esos dias multiplicarlo por el monto 540.00 son 4320 y guardar su resultado

    despues del 10/03 al 20/03 son 10 dias multiplicarlo por el monto 300 son 3000 y guardar ese resultado

    depues del 20/03 hasta la fecha @hasta que es 30/03 son otros 10 dias y multiplicarlo por el monto 500 son 5000 y guardar su resultado, al final se tienen que sumar los 3 resultados 4320,3000 y 5000 = 12320


    • Editado jose_rod94 jueves, 7 de noviembre de 2013 20:26
    jueves, 7 de noviembre de 2013 20:04
  • Proba esto:

    Create Table #T (clv_Nom Int,
    				NombreConcepto NVarchar(50),
    				fecha DATE,
    				monto Decimal(10,2));
    
    Insert
    Into	#T
    Values	(1,'Compra de semilla','2013-03-10',300.00),
    		(1,'Refacciones','2013-03-02',540.00),
    		(1,'Fertilizante','2013-03-20',500.00);
    
    With T As
    (Select	Row_Number() Over(Order By fecha) N,
    		*
    From	#T)
    Select	T1.*,
    		DateDiff(Day,T1.Fecha,T2.Fecha)*T1.Monto MontoTotal
    From	T T1
    Left Join T T2
    		On T1.N=T2.N-1;


    El castellano no es mi lengua materna. Discúlpenme por los errores gramaticales, y, si pueden, corríjanme en los comentarios, o por correo electrónico. ¡Muchas gracias! Blog: http://about.me/GeriReshef

    • Marcado como respuesta jose_rod94 jueves, 7 de noviembre de 2013 20:45
    jueves, 7 de noviembre de 2013 20:31
  • genial!

    muchas gracias, me ha servido!!

    jueves, 7 de noviembre de 2013 20:40