Tengo un problema con el sig SP
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..