Ver Mensaje Individual
  #3 (permalink)  
Antiguo 07/04/2011, 14:58
diegohalbo
 
Fecha de Ingreso: abril-2011
Ubicación: Morazan
Mensajes: 27
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Consulta para calcular ventas por mes(Comparativo)

Cita:
Iniciado por juantiva Ver Mensaje
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
gracias, siento molestarte pero no me esta mostrando resultados con decimales que debo sustituir para que lo haga? ademas que significa "Products (nolock)"

Última edición por diegohalbo; 07/04/2011 a las 15:22