Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/04/2011, 15:32
diegohalbo
 
Fecha de Ingreso: abril-2011
Ubicación: Morazan
Mensajes: 27
Antigüedad: 13 años, 1 mes
Puntos: 0
como obtengo exactamente los resultados de esta consulta pero sin crear funcion

como consigo que muestre resultados con decimales? y como logro obtener este mismo resultado
pero sin crear funcion?


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)