Código SQL:
Ver original
-- Exec p5rVtaArticuloDetallado1 '2011/04' ALTER PROCEDURE p5rVtaArticuloDetallado1 (@IdPeriodo utclave) AS SET NoCount OFF SET dateformat dmy DECLARE @FechaInicial utFecha, @FechaFinal utFecha, @Anio utentero, @Periodo utentero, @ExstMesPrevio utentero, @InvMesPrevio utentero --select top(1)* from periodo SELECT @IdPeriodo=@Idperiodo SELECT @FechaInicial=FechaInicial FROM periodo WHERE ID=@IdPeriodo SELECT @FechaFinal=FechaFinal FROM periodo WHERE ID=@IdPeriodo SELECT @Anio=Anio FROM periodo WHERE ID=@IdPeriodo SELECT @Periodo=Periodo FROM periodo WHERE ID=@IdPeriodo SELECT @ExstMesPrevio=(CASE WHEN @Periodo IN ('2','3','4','5','6','7','8','9','10','11','12') THEN SUM(@Periodo-1) WHEN periodo = '1' THEN SUM(@Periodo-11) END) FROM Periodo P WHERE FechaInicial=@FechaInicial AND FechaFinal=@FechaFinal GROUP BY periodo SELECT @InvMesPrevio=(CONVERT (INT, (Id))) FROM Periodo WHERE Anio=@Anio AND Periodo=@ExstMesPrevio --insert into ArticuloEstado SELECT FE.Cliente,FD.Folio,FE.CondicionPago, FE.Fecha,FD.Articulo,FD.DescripcionArticulo, FD.Cantidad AS PiezaVendidas, FD.Precio, Isnull((fd.Pedimento),0) AS FactPedimento, SUM(ED.Cantidad) AS EntXComp , Isnull((ED.Pedimento),0) AS EntradaCPedimento, MAX(Isnull((CSD.fechaultimoabono),0)) AS FechaAbono , (CASE WHEN CSD.Importe=CSD.ImporteAplicado THEN 'Saldado' WHEN CSD.Saldo >CSD.ImporteAplicado THEN 'NoExistePago' WHEN CSD.Saldo <CSD.ImporteAplicado THEN 'ExisteAbono' END) AS Estado, Isnull(SUM(ASS.Existencia),0) AS ExistenciA FROM FacturaEncabezado FE ,FacturaDetalle FD, Cliente, Moneda, Articulo, EntradaEncabezado EE, EntradaDetalle ED, ClienteSaldoDocumento CSD, ArticuloSaldos ASS WHERE FE.Empresa = FD.Empresa AND FE.Folio = FD.Folio AND FE.Cliente = Cliente.Clave AND FE.Moneda = Moneda.Clave AND FD.Articulo = Articulo.Clave AND FE.Empresa = 'emp1' AND FE.Fecha BETWEEN @FechaInicial AND @FechaFinal AND EE.Folio=ED.Folio AND FD.Pedimento=ED.Pedimento AND ED.Empresa=FE.Empresa AND FD.Articulo=Ed.Articulo AND FE.Folio='EG00046393' AND EE.Documento='ECPAM' AND EE.Operacion='Entrada' AND ED.Fecha1 BETWEEN @FechaInicial AND @FechaFinal AND ED.Almacen IN ('01','03','07') AND FE.Cliente=CSD.Cliente AND FE.Folio=CSD.Folio AND FD.Folio=CSD.Folio --and ASS.ARticulo='6030031' AND ASS.Articulo=FD.Articulo AND ASS.Articulo=Articulo.Clave AND ASS.Articulo=Ed.Articulo AND CSD.operacion='Factura' AND ASS.Empresa= 'EMP1' AND ASS.idperiodo =@InvMesPrevio AND ASS.almacen IN ('01','03','07') GROUP BY FE.Cliente,FD.Folio,FE.CondicionPago,FE.Fecha,FD.Articulo,FD.DescripcionArticulo,FD.Cantidad,FD.Precio,fd.Pedimento,ED.Pedimento ,CSD.fechaultimoabono,CSD.fecha,CSD.ImporteAplicado ,CSD.Importe,CSD.Saldo
Cuando ejecuto la consulta me sale el error
Msg 245, Level 16, State 1, Procedure p5rVtaArticuloDetallado1, Line 30
Conversion failed when converting the varchar value '2011/03 ' to data type int.
que esta haciendo referencia al @InvtMesPrevio... por eso trate de convertirlo a entero pero aún asi me marca error..
Otro problema q tengo es q en la tabla ClienteSaldoDocumento puedo tener varios registros de un folio.. por lo cual si un folio tiene registro 4 veces en esta tabla me los devuelve a la consulta... y solo quiero q me traiga el máximo de la fecha de abono... espero me puedan ayudar ya trate con el max pero me sigue trayendo los 4 registros..