sábado, 26 de noviembre de 2011

TA - Northwind

----PREGUNTA 7------

CREATE FUNCTION Lista_Empleados(@Mes INT,@Anno INT)
RETURNS @Resultado TABLE (Names NVARCHAR(40), City NVARCHAR(15),Region NVARCHAR(15),PostalCode NVARCHAR(10),Country NVARCHAR(15), Ventas FLOAT, Compras FLOAT)
AS
BEGIN
DECLARE @prom AS FLOAT
SELECT @prom = SUM ((d.Quantity*d.unitprice)/d.Quantity)
FROM [Order Details] d INNER JOIN Orders o ON o.orderid=d.orderid
WHERE MONTH (o.orderdate)=@Mes AND Year (o.orderdate)=@Anno

INSERT INTO @Resultado

SELECT  E.LastName +' '+ E.FirstName AS Nombre,E.City,E.Region,E.PostalCode,E.Country,
            SUM(d.Quantity * d.unitprice) as Ventas,0.00 as Compras
    FROM
EMPLOYEES E INNER JOIN ORDERS O ON E.EmployeeID=O.EmployeeID INNER JOIN [Order Details] D ON O.orderid=D.orderid
WHERE
MONTH(O.orderdate)=@Mes AND YEAR (o.orderdate)=@Anno
GROUP BY E.LastName,E.FirstName ,E.City,E.Region,E.PostalCode,E.Country
HAVING SUM(D.Quantity*d.unitprice)>@prom
UNION
SELECT C.CompanyName as Nombre,C.City,C.Region,C.PostalCode,C.Country,
        0.00 as Ventas,sum(d.Quantity * d.unitprice) as Compras
       
    FROM
        CUSTOMERS C INNER JOIN ORDERS O ON C.CustomerID=O.CustomerID
        INNER JOIN [Order Details] D ON O.orderid=D.orderid
    WHERE MONTH(o.orderdate)=@Mes AND YEAR(o.orderdate)=@Anno
    GROUP BY C.CompanyName,C.City,C.Region,C.PostalCode,C.Country
    HAVING SUM(d.Quantity*d.unitprice)<@prom
    RETURN
   
    END
    GO

---PREGUNTA 8 -----

CREATE PROCEDURE uspProductoIUD (
    @ProductID int, @ProductName nvarchar(40), @SupplierID int,
    @CategoryID int, @QuantityPerUnit nvarchar(20),
    @UnitPrice money, @UnitsInStock smallint, @UnitsOnOrder smallint,
    @ReorderLevel smallint, @Discontinued bit,@Operacion int
)
AS BEGIN
    IF @Operacion = 1 BEGIN
        INSERT INTO Products
        (ProductName,SupplierID,CategoryID,QuantityPerUnit,UnitPrice,
         UnitsInStock,UnitsOnOrder,ReorderLevel,Discontinued)
        VALUES
        (@ProductName,@SupplierID,@CategoryID,@QuantityPerUnit,
         @UnitPrice,@UnitsInStock,@UnitsOnOrder,@ReorderLevel,@Discontinued)
    END

    IF @Operacion = 2 BEGIN
        UPDATE Products
        SET      
            ProductName = @ProductName,SupplierID = @SupplierID,
            CategoryID = @CategoryID,QuantityPerUnit = @QuantityPerUnit,
            UnitPrice = @UnitPrice,UnitsInStock = @UnitsInStock,
            UnitsOnOrder = @UnitsOnOrder,ReorderLevel = @ReorderLevel,
            Discontinued = @Discontinued
        WHERE
            ProductID = @ProductID
    END

    IF @Operacion = 3 BEGIN
        DELETE FROM Products WHERE ProductID = @ProductID
    END
END


No hay comentarios:

Publicar un comentario