Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/04/2011, 11:36
juantiva
 
Fecha de Ingreso: junio-2006
Mensajes: 109
Antigüedad: 17 años, 10 meses
Puntos: 2
Respuesta: Consulta para calcular ventas por mes(Comparativo)

Primero creas una funcion:

Código SQL:
Ver original
  1. IF OBJECT_ID (N'dbo.ProductResultByMonth', N'FN') IS NOT NULL
  2.     DROP FUNCTION dbo.ProductResultByMonth;
  3. GO
  4. CREATE FUNCTION dbo.ProductResultByMonth(@ProductId INT, @YEAR INT, @MONTH INT)
  5. RETURNS DECIMAL
  6. WITH EXECUTE AS CALLER
  7. AS
  8. BEGIN
  9.      DECLARE @RESULT DECIMAL;
  10.  
  11. SELECT
  12.     @RESULT = SUM([ORDER Details].UnitPrice * [ORDER Details].Quantity)
  13. FROM
  14.     Products
  15. INNER JOIN
  16.     [ORDER Details]
  17. ON
  18.     [ORDER Details].ProductID = Products.ProductID
  19. INNER JOIN
  20.     Orders
  21. ON
  22.     [ORDER Details].OrderID = Orders.OrderID
  23. WHERE
  24.     Products.ProductID = @ProductId AND
  25.     YEAR(Orders.OrderDate) = @YEAR AND
  26.     MONTH(Orders.OrderDate) = @MONTH
  27.  
  28.      RETURN(ISNULL(@RESULT,0));
  29. END;
  30. GO

Luego para lograr el formato que requieres utilizas la funcion:

Código SQL:
Ver original
  1. DECLARE @YEAR INT
  2. SET @YEAR = 1997
  3.  
  4. SELECT
  5. ProductName,
  6. dbo.ProductResultByMonth(ProductID, @YEAR, 1) Enero,
  7. dbo.ProductResultByMonth(ProductID, @YEAR, 2) Febrero,
  8. dbo.ProductResultByMonth(ProductID, @YEAR, 3) Marzo,
  9. dbo.ProductResultByMonth(ProductID, @YEAR, 4) Abril,
  10. dbo.ProductResultByMonth(ProductID, @YEAR, 5) Mayo,
  11. dbo.ProductResultByMonth(ProductID, @YEAR, 6) Junio,
  12. dbo.ProductResultByMonth(ProductID, @YEAR, 7) Julio,
  13. dbo.ProductResultByMonth(ProductID, @YEAR, 8) Agosto,
  14. dbo.ProductResultByMonth(ProductID, @YEAR, 9) Septiembre,
  15. dbo.ProductResultByMonth(ProductID, @YEAR, 10) Octubre,
  16. dbo.ProductResultByMonth(ProductID, @YEAR, 11) Noviembre,
  17. dbo.ProductResultByMonth(ProductID, @YEAR, 12) Diciembre
  18. FROM
  19.     Products (nolock)

Suerte