Ver Mensaje Individual
  #2  
Antiguo 12-10-2004
oliverinf oliverinf is offline
Miembro
 
Registrado: feb 2004
Posts: 65
Reputación: 21
oliverinf Va por buen camino
Con el siguiente procedimiento almacenado logré obtener lo que deseo (aunque voy a seguir en la búsqueda de lograrlo con una sentencia SQL, sin usar un proc. almac.)

Código SQL [-]
CREATE PROCEDURE ARTSPROVS_PRECIOMINIMO 
RETURNS (
    ID_ART INTEGER,
    ID_PROV INTEGER,
    ARTNOMBRE VARCHAR (50),
    PROVNOMBRE VARCHAR (50),
    PREC NUMERIC (9, 2),
    DTO NUMERIC (5, 2),
    PRECIOMINIMO NUMERIC (9, 2))
AS
Declare variable Id_AAnterior integer;
BEGIN
   /* Con el Select del for obtengo los registros ordenados por
   Id_Articulo, PrecioMin. */
   Id_AAnterior = -1;
   for select A_P.ID_ARTICULO, A_P.ID_PROVEEDOR, A.NOMBRE, P.NOMBRE,
          A_P.PRECIO, A_P.DESCUENTO,
          MIN(A_P.PRECIO - (A_P.PRECIO * A_P.DESCUENTO / 100))
          from ARTICULO_PROVEEDOR A_P
             inner join ARTICULO A on (A_P.ID_ARTICULO = A.ID_ARTICULO)
             inner join PROVEEDOR P on (A_P.ID_PROVEEDOR = P.ID_PROVEEDOR)
          group by A_P.ID_ARTICULO, A_P.ID_PROVEEDOR, A.NOMBRE, P.NOMBRE,
          A_P.PRECIO, A_P.DESCUENTO
          order by A_P.ID_ARTICULO, 7
          into :Id_Art, :Id_Prov, :ArtNombre, :ProvNombre, :Prec, to, :PrecioMinimo
      do begin
         if (Id_AAnterior <> Id_Art) then
            suspend;
         Id_AAnterior = Id_Art;
   end /* for */
END

Muchas gracias a todos.
Guillermo
Responder Con Cita