martes, 19 de junio de 2018

Fecha Inicial : .19/06/2018 
Fecha Final :  .19/06/2018
Hora Inicio: .11:30
Hora Final: . 12:30
Horas invertidas(Minutos): 60 minutos
Colaboradores: José David Rodríguez
Tipo de labor: Individual



Actividad:Inicio de la creación de las consultas
Para la segunda consulta, se piensa que lo más eficiente es agregar un campo que se llame GananciaVendedor a la tabla Operación. Este será positivo o negativo dependiendo si el vendedor vende más caro o más barato de lo que compró (ver Imagen 1). Explicación a los compañeros del cambio en la consulta (ver Imagen 2).
Cambios en la consulta 1. Se estaba haciendo la consulta solo con las fechas como parámetros. Se le agrego el DocID del emisor como parámetro y se agregó validación en caso de que se ingrese como parámetro un valor que no esté en la base de datos (ver Imagen 3).




Imágenes:

Imagen1

Imagen 2














Imagen 3


Apéndice:



  • Código Versión 1.2 - Tablas
CREATE TABLE Operacion(
     ID INT PRIMARY KEY identity(1,1),
 FK_TipoOperacion INT NOT NULL FOREIGN KEY REFERENCES TipoOperacion(ID),
     FK_Agente INT NOT NULL FOREIGN KEY REFERENCES Agente(ID),
     FK_ClienteCompra INT NOT NULL FOREIGN KEY REFERENCES Cliente(ID),
     FK_ClienteVenta INT NOT NULL FOREIGN KEY REFERENCES Cliente(ID),
     FK_Movimiento int not null foreign key references MovimientoAcciones(ID),

 Fecha DATE NOT NULL,
     QAcciones INT NOT NULL,
 Total int not null,
 Comision int not null,
 GananciaVendedor int not null default 0,

     Visible CHAR NOT NULL default 'y', CHECK (Visible = 'y' OR Visible = 'n')
)

  • Código Versión 1.3 - Consulta 1
CREATE PROCEDURE Consulta_1
@emisorDocID int,
@fechaInicio date,
@fechaFin date
AS
BEGIN
IF EXISTS (SELECT * FROM Emisor E, Operacion OP WHERE DocID = @emisorDocID and Op.Fecha>=@fechaInicio and Op.Fecha <= @fechaFin)
BEGIN 
SELECT E.Nombre, A.ID, A.PrecioActual,AVG(MA.Precio),COUNT(MA.ID) 
FROM Accion A INNER JOIN MovimientoAcciones MA 
ON A.ID = MA.FK_Accion INNER JOIN Operacion Op 
ON Op.FK_Movimiento = MA.ID and A.ID = MA.FK_Accion and Op.Fecha>=@fechaInicio and Op.Fecha <= @fechaFin  INNER JOIN Emisor E
ON E.DocID = @emisorDocID and A.FK_Emisor = E.ID
GROUP BY A.ID, A.PrecioActual
ORDER BY A.PrecioActual
END
ELSE
BEGIN
RETURN -50001 --Alguno de los parámetros no está registrado en la base de datos
END
END

GO

Fuente:

 Conocimiento adquirido

No hay comentarios.:

Publicar un comentario