Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/05/2013, 10:47
Avatar de aid_val
aid_val
 
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 11 años, 8 meses
Puntos: 5
Pregunta Procedimiento almacenado en SQL con Acumulados

Hola a todos: otra ves sufriendo con consultas

ahora lo que pretendo hacer es un procedimiento almacenado que me permita hacer un Update para agregar acumulados en mi tabla.

este es mi procedimiento almacenado
Código SQL:
Ver original
  1. CREATE PROCEDURE [dbo].[PA_MODIFICAR_CANTIDAD]
  2. @ID_RESUMEN_GENERADOR BIGINT,
  3. @ID_CONCEPTO BIGINT,
  4. @CANTIDAD_ESTIMACION DECIMAL(18,4)
  5. AS
  6. DECLARE @ACUMULADO_ESTIMACION_ATERIOR DECIMAL(18,4),
  7. @ACUMULADO_ESTIMACION DECIMAL(18,4),
  8. @CANTIDAD_FALTANTE DECIMAL(18,4)
  9.  
  10. BEGIN try
  11. BEGIN tran
  12.  
  13. SET @ACUMULADO_ESTIMACION  =(SELECT a.ID_RESUMEN_GENERADOR, a.CANTIDAD_ESTIMACION, SUM(b.CANTIDAD_ESTIMACION) FROM resumen_generador  a CROSS JOIN resumen_generador  b WHERE (b.id_resumen_generador <= a.id_resumen_generador AND A.id_concepto=@ID_CONCEPTO )GROUP BY a.id_resumen_generador ,a.cantidad_estimacion ORDER BY a.id_resumen_generador ,a.cantidad_estimacion )
  14. SET @ACUMULADO_ESTIMACION_ATERIOR =(SELECT a.ID_RESUMEN_GENERADOR,       a.CANTIDAD_ESTIMACION,       SUM(b.CANTIDAD_ESTIMACION) -(MAX(a.CANTIDAD_ESTIMACION) ) FROM resumen_generador  a CROSS JOIN resumen_generador  b WHERE (b.id_resumen_generador <= a.id_resumen_generador AND A.id_concepto=@ID_CONCEPTO )GROUP BY a.id_resumen_generador ,a.cantidad_estimacion ORDER BY a.id_resumen_generador ,a.cantidad_estimacion )
  15. SET @CANTIDAD_FALTANTE =((SELECT CANTIDAD_PRESUPUESTO FROM ConceptoPresu WHERE id_concepto = @ID_CONCEPTO)-@ACUMULADO_ESTIMACION )
  16.  
  17. UPDATE resumen_generador SET @CANTIDAD_ESTIMACION=CANTIDAD_ESTIMACION,
  18.                              @ACUMULADO_ESTIMACION_ATERIOR  = CANTIDAD_ACUMULADA_ANTERIOR,
  19.                              @ACUMULADO_ESTIMACION = CANTIDAD_ACUMULADA_ESTIMACION,
  20.                              @CANTIDAD_FALTANTE = CANTIDAD_FALTANTE
  21.                              WHERE id_resumen_generador=@ID_RESUMEN_GENERADOR
  22.            
  23. COMMIT
  24. END TRY
  25. BEGIN CATCH
  26.     ROLLBACK
  27.     PRINT error_message()
  28. END CATCH

Pero me manda un error y la verdad no se por qué sea.
La cláusula ORDER BY no es válida en vistas, funciones insertadas, tablas derivadas, subconsultas ni expresiones de tabla común, salvo que se especifique también TOP o FOR XML.

De ante mano muchas gracias

Última edición por gnzsoloyo; 20/05/2013 a las 10:56 Razón: SQL sin etiquetar. Usar HIGHLIGHT "SQL"