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
CREATE PROCEDURE [dbo].[PA_MODIFICAR_CANTIDAD] @ID_RESUMEN_GENERADOR BIGINT, @ID_CONCEPTO BIGINT, @CANTIDAD_ESTIMACION DECIMAL(18,4) AS DECLARE @ACUMULADO_ESTIMACION_ATERIOR DECIMAL(18,4), @ACUMULADO_ESTIMACION DECIMAL(18,4), @CANTIDAD_FALTANTE DECIMAL(18,4) BEGIN try BEGIN tran 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 ) 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 ) SET @CANTIDAD_FALTANTE =((SELECT CANTIDAD_PRESUPUESTO FROM ConceptoPresu WHERE id_concepto = @ID_CONCEPTO)-@ACUMULADO_ESTIMACION ) UPDATE resumen_generador SET @CANTIDAD_ESTIMACION=CANTIDAD_ESTIMACION, @ACUMULADO_ESTIMACION_ATERIOR = CANTIDAD_ACUMULADA_ANTERIOR, @ACUMULADO_ESTIMACION = CANTIDAD_ACUMULADA_ESTIMACION, @CANTIDAD_FALTANTE = CANTIDAD_FALTANTE WHERE id_resumen_generador=@ID_RESUMEN_GENERADOR COMMIT END TRY BEGIN CATCH ROLLBACK PRINT error_message() 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