Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Problemas con un SP

Estas en el tema de Problemas con un SP en el foro de SQL Server en Foros del Web. Tengo un problema con el sig SP @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original --      Exec p5rVtaArticuloDetallado1 '2011/04' ALTER PROCEDURE p5rVtaArticuloDetallado1   ( @IdPeriodo ...
  #1 (permalink)  
Antiguo 25/07/2011, 10:43
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 14 años, 1 mes
Puntos: 1
Problemas con un SP

Tengo un problema con el sig SP

Código SQL:
Ver original
  1. --      Exec p5rVtaArticuloDetallado1 '2011/04'
  2. ALTER PROCEDURE p5rVtaArticuloDetallado1
  3.  
  4. (@IdPeriodo utclave)
  5.  
  6. AS
  7.  
  8. SET NoCount OFF
  9. SET dateformat dmy
  10.  
  11. DECLARE
  12. @FechaInicial utFecha,
  13. @FechaFinal   utFecha,
  14. @Anio   utentero,
  15. @Periodo utentero,
  16. @ExstMesPrevio utentero,
  17. @InvMesPrevio utentero
  18.  
  19. --select top(1)* from periodo
  20.  
  21. SELECT @IdPeriodo=@Idperiodo
  22. SELECT @FechaInicial=FechaInicial FROM periodo WHERE ID=@IdPeriodo
  23. SELECT @FechaFinal=FechaFinal FROM periodo WHERE ID=@IdPeriodo
  24. SELECT @Anio=Anio FROM periodo WHERE ID=@IdPeriodo
  25. SELECT @Periodo=Periodo FROM periodo WHERE ID=@IdPeriodo
  26. SELECT @ExstMesPrevio=(CASE WHEN @Periodo IN ('2','3','4','5','6','7','8','9','10','11','12') THEN SUM(@Periodo-1)
  27.             WHEN periodo = '1' THEN SUM(@Periodo-11) END)
  28.             FROM Periodo P WHERE FechaInicial=@FechaInicial AND FechaFinal=@FechaFinal GROUP BY periodo
  29.  
  30. SELECT @InvMesPrevio=(CONVERT (INT, (Id))) FROM Periodo WHERE Anio=@Anio AND Periodo=@ExstMesPrevio
  31.  
  32.  
  33. --insert into ArticuloEstado
  34.  
  35. SELECT
  36.     FE.Cliente,FD.Folio,FE.CondicionPago, FE.Fecha,FD.Articulo,FD.DescripcionArticulo,
  37.     FD.Cantidad AS PiezaVendidas,    FD.Precio,     Isnull((fd.Pedimento),0) AS FactPedimento,
  38.     SUM(ED.Cantidad) AS EntXComp ,
  39.     Isnull((ED.Pedimento),0) AS EntradaCPedimento,
  40. MAX(Isnull((CSD.fechaultimoabono),0)) AS FechaAbono ,
  41. (CASE   WHEN CSD.Importe=CSD.ImporteAplicado THEN 'Saldado'
  42.         WHEN CSD.Saldo >CSD.ImporteAplicado THEN 'NoExistePago'
  43.         WHEN CSD.Saldo <CSD.ImporteAplicado THEN 'ExisteAbono' END) AS Estado,
  44. Isnull(SUM(ASS.Existencia),0) AS ExistenciA
  45.  
  46. FROM    FacturaEncabezado FE ,FacturaDetalle FD, Cliente, Moneda, Articulo,
  47.         EntradaEncabezado EE, EntradaDetalle ED, ClienteSaldoDocumento CSD, ArticuloSaldos ASS
  48. WHERE   FE.Empresa = FD.Empresa AND
  49.         FE.Folio = FD.Folio AND
  50.         FE.Cliente = Cliente.Clave AND
  51.         FE.Moneda = Moneda.Clave AND
  52.         FD.Articulo = Articulo.Clave AND
  53.         FE.Empresa = 'emp1' AND
  54.         FE.Fecha BETWEEN @FechaInicial AND @FechaFinal
  55. AND EE.Folio=ED.Folio AND FD.Pedimento=ED.Pedimento
  56. AND ED.Empresa=FE.Empresa
  57. AND FD.Articulo=Ed.Articulo
  58. AND FE.Folio='EG00046393'
  59. AND EE.Documento='ECPAM' AND EE.Operacion='Entrada'  
  60. AND ED.Fecha1 BETWEEN @FechaInicial AND @FechaFinal
  61. AND ED.Almacen IN ('01','03','07')
  62. AND FE.Cliente=CSD.Cliente
  63. AND FE.Folio=CSD.Folio
  64. AND FD.Folio=CSD.Folio
  65. --and ASS.ARticulo='6030031'
  66. AND ASS.Articulo=FD.Articulo
  67. AND ASS.Articulo=Articulo.Clave
  68. AND ASS.Articulo=Ed.Articulo
  69. AND CSD.operacion='Factura'
  70. AND ASS.Empresa= 'EMP1'  
  71. AND ASS.idperiodo =@InvMesPrevio AND ASS.almacen IN ('01','03','07')
  72.  
  73. GROUP BY FE.Cliente,FD.Folio,FE.CondicionPago,FE.Fecha,FD.Articulo,FD.DescripcionArticulo,FD.Cantidad,FD.Precio,fd.Pedimento,ED.Pedimento
  74.    ,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..
  #2 (permalink)  
Antiguo 25/07/2011, 11:07
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Problemas con un SP

Respuesta primer pregunta, no puedes convertir una fecha o un valor 01/1 a int, obten el valor del mes en este caso con un datepart(m,fecha)

Segunda pregunta, es por tu agrupacion estas agrupando campos por los cuales al momento de agrupar te va a dar diferentes valores.

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 25/07/2011, 12:05
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Problemas con un SP

el primero tienes razón lo intente convertir de mil maneras y mejor lo deje como utclave y me funciono.

El segundo caso todavía no encuentro la solución se que es por algún tipo de agrupamiento pero no se como obtener solo un dato. en una relación de 1 a 4, el resultado q me esta dando es 4 lineas

Etiquetas: case, registros, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:20.