IF OBJECT_ID (N'dbo.ProductResultByMonth', N'FN') IS NOT NULL
DROP FUNCTION dbo.ProductResultByMonth;
GO
CREATE FUNCTION dbo.ProductResultByMonth(@ProductId INT, @Year INT, @Month int)
RETURNS decimal
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @Result decimal;
SELECT
@Result = SUM([ORDER Details].UnitPrice * [ORDER Details].Quantity)
FROM
Products
INNER JOIN
[ORDER Details]
ON
[ORDER Details].ProductID = Products.ProductID
INNER JOIN
Orders
ON
[ORDER Details].OrderID = Orders.OrderID
WHERE
Products.ProductID = @ProductId AND
YEAR(Orders.OrderDate) = @Year AND
MONTH(Orders.OrderDate) = @Month
RETURN(ISNULL(@Result,0));
END;
GO
DECLARE @Year int
SET @Year = 1997
SELECT
ProductName,
dbo.ProductResultByMonth(ProductID, @Year, 1) Enero,
dbo.ProductResultByMonth(ProductID, @Year, 2) Febrero,
dbo.ProductResultByMonth(ProductID, @Year, 3) Marzo,
dbo.ProductResultByMonth(ProductID, @Year, 4) Abril,
dbo.ProductResultByMonth(ProductID, @Year, 5) Mayo,
dbo.ProductResultByMonth(ProductID, @Year, 6) Junio,
dbo.ProductResultByMonth(ProductID, @Year, 7) Julio,
dbo.ProductResultByMonth(ProductID, @Year, 8) Agosto,
dbo.ProductResultByMonth(ProductID, @Year, 9) Septiembre,
dbo.ProductResultByMonth(ProductID, @Year, 10) Octubre,
dbo.ProductResultByMonth(ProductID, @Year, 11) Noviembre,
dbo.ProductResultByMonth(ProductID, @Year, 12) Diciembre
FROM
Products (nolock)
como consigo que muestre resultados con decimales y existe alguna forma de obtener este mismo resultado
pero sin crear funcion?y alguien puede explicarme cada parrafo de este codigo?