cancel
Showing results for 
Search instead for 
Did you mean: 

Query para sumar cantidad vendida por mes.

Former Member
0 Kudos

Estimados:

Tengo un query en la que saco varios campos de distintas tablas, una de ellas es INV1 desde la cual saco la cantidad vendida por producto.

Obviamente que esta consulta me trae las ventas una a una, pero yo necesito el total por mes, alguien sabe como lo puedo hacer?

Ademas es posible que los meses me salgan por columnas y no por filas?

Gracias.

Saludos a todos,

Viviana Medina

Accepted Solutions (1)

Accepted Solutions (1)

jitin_chawla
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi,

Please check the following thread information which could be of some help to you :

Regards,

Jitin

SAP Business One Forum Team

Answers (2)

Answers (2)

Former Member
0 Kudos

Buenos días:

Este query te puede servir para sacar la información que necesitas, solo es cuestión de que cambies un poco la sintáxis para que obtengas la información que quieres. En mi caso lo hice para sacar las ventas diarias del cliente mostrador.

Ya que tú deseas sacar tu venta por articulo debes hacer algo similar, ya que deberás restar las cancelaciones hechas también para obtener la venta real. De ésta forma acomodas tus filas en columnas, y puesto que tú variables dinámicas son las fechas podrás obtener el rango de mes que desees.

/*SELECT FROM .[OCRD] T2,[dbo].[ORDR] T3 */ DECLARE @FECHA1 DATETIME DECLARE @FECHA2 DATETIME

SET @FECHA1 = /* T3.DOCDATE */ '[%0]'

SET @FECHA2 = /* T3.DOCDATE */ '[%1]'

SELECT Fecha 'FECHA', sum(Venta_Directa) 'VENTA DIRECTA',sum(Cancelaciones ) 'NOTAS CRDITO', sum(Venta_Credito) 'VENTA CREDITO' FROM ( SELECT distinct T0.CreateDate as 'Fecha' , sum(T0.DocTotal) as 'Venta_Directa' ,0 as Cancelaciones, 0 as Venta_Credito FROM NNM1 T1 INNER JOIN OINV T0 ON T0.Series = T1.Series WHERE T0.CardCode = 'BMOS' AND T1.SeriesName = 'bola' and T0.CreateDate between @FECHA1 and @FECHA2 group by T0.CreateDate

union all

SELECT T0.CREATEDATE, 0,SUM(T0.DocTotal),0 FROM ORIN T0, NNM1 T2 WHERE T0.Series = T2.Series AND T2.SeriesName = 'bola' and T0.CreateDate between

@FECHA1 and @FECHA2 group by T0.CREATEDATE union all SELECT T0.CreateDate ,0,0,SUM(T0.DocTotal) FROM NNM1 T1 INNER JOIN OINV T0 ON T0.Series = T1.Series WHERE T0.CardCode <> 'BMOS' AND T1.SeriesName = 'bola' and T0.CreateDate between @FECHA1 and @FECHA2 group by T0.CreateDate)AS T88 group by Fecha

former_member649942
Active Participant
0 Kudos

Por favor postea el query que tienes y como te gustaria que salgan tus columnas, gracias.

Former Member
0 Kudos

Aqui envio el sql que tengo, espero me puedas ayudar.

SELECT T0.[ItemCode] as "Articulo", T0.[ItemName] as "Descripcion", T0.[SalPackUn] as "Cant.x Caja", T0.[SVolume] as "Vol.Caja", T1.[ItmsGrpNam] as "Grupo", T2.[WhsCode] as "Bodega", T2.[OnHand] as "Stock", T2.[IsCommited] as "Pedidos", (T2.[OnHand]-T2.[IsCommited]) as "Stock total", T2.[OnOrder] as "OC x llegar", T3.[FinncPriod] as "Mes", T3.[Quantity] as "Cant.Vtas" FROM OITM T0 INNER JOIN OITB T1 ON T0.ItmsGrpCod = T1.ItmsGrpCod INNER JOIN OITW T2 ON T0.ItemCode = T2.ItemCode INNER JOIN INV1 T3 ON T0.ItemCode = T3.ItemCode WHERE T1.[ItmsGrpNam] =[%0] and T2.[WhsCode] =[%1] and T3.[FinncPriod] >=[%2] and T3.[FinncPriod] <=[%3] order by T0.[ItemCode

Esta consulta entre otras cosas me entrega la venta de un articulo, pero si tengo mas de una venta en el mismo mes me muestra el detalle y lo que necesito es el total por mes.

Ademas necesito que los meses aparezcan hacia el lado y no hacia abajo.

Gracias.

Saludos,

Viviana Medina.

former_member649942
Active Participant
0 Kudos

Hola Vivi, te recomiendo revises el post que puso uno de los colegas en respuesta de tu peticion, es cuestion demodificarlo y queda tu consulta, lo revise y si es funcionable, ahora bien si se te hace complicado contactame para poder revisar bien el tuyo.

julian_chino(arroba)hotmail.com msn

juliancab(arroba)autopartesrv.com.mx mail

Former Member
0 Kudos

Has probado a hacerlo con xl reporter, en dicho sistema puedes conseguir ese report facilmente.