cancel
Showing results for 
Search instead for 
Did you mean: 

Consulta de Articulos

Former Member
0 Kudos

Hola buen día tengo la siguiente consulta  la cual me arroja la cantidad de artículos  por cliente por año en columnas por mes lo que debe hacer es restar las notas de devolución :

Como consideración solo quiero de un grupo de clientes y un solo articulo el cual esta definido en la variable

Consulta1

========================================================================================

Declare @articulo varchar(100)='P00191'/*declaracion de la variable articulo*/

DECLARE @mes INT= datepart(month,getdate())

/*Inicio de la consulta principal*/

SELECT CardCode, CardName ,ItemCode,

                    /*Isnull si el resultado devuelto contiene valores nulos los datos no pueden ser formateados ni trabajados con alguna otra funcion

                    */

                              /*Enero*/ISNULL([1], 0.00)-ISNULL([01], 0.00)as 'Enero',

                              /*Febrero*/ISNULL([2], 0.00)-ISNULL([02], 0.00)as 'Febrero',

                              /*Marzo*/ISNULL([3], 0.00)-ISNULL([03], 0.00)as 'Marzo',

                              /*Abril*/ISNULL([4], 0.00)-ISNULL([04], 0.00)as 'Abril',

                              /*Mayo*/ISNULL([5], 0.00)-ISNULL([05], 0.00)as 'Mayo',

                              /*Junio*/ISNULL([6], 0.00)-ISNULL([06], 0.00)as 'Junio',

                              /*Julio*/ISNULL([7], 0.00)-ISNULL([07], 0.00)as 'Julio',

                              /*Agosto*/ISNULL([8], 0.00)-ISNULL([08], 0.00)as 'Agosto',

                              /*Septiembre*/ISNULL([9], 0.00)-ISNULL([09], 0.00)as 'Septiembre',

                              /*Octubre*/ISNULL([10], 0.00)-ISNULL([010], 0.00)as 'Octubre',

                              /*Noviembre*/ISNULL([11], 0.00)-ISNULL([011], 0.00)as 'Noviembre',

                              /*Diciembre*/ISNULL([12], 0.00)-ISNULL([012], 0.00)as 'Diciembre'

                              /*Total*/,((ISNULL([1], 0.00)-ISNULL([01], 0.00))+(ISNULL([2], 0.00)-ISNULL([02], 0.00))+(ISNULL([3], 0.00)-ISNULL([03], 0.00))+(ISNULL([4], 0.00)-ISNULL([04], 0.00))+(ISNULL([5], 0.00)-ISNULL([05], 0.00))+(ISNULL([6], 0.00)-ISNULL([06], 0.00))+(ISNULL([7], 0.00)-ISNULL([07], 0.00))+(ISNULL([8], 0.00)-ISNULL([08], 0.00))+(ISNULL([9], 0.00)-ISNULL([09], 0.00))+(ISNULL([10], 0.00)-ISNULL([010], 0.00))+(ISNULL([11], 0.00)-ISNULL([011], 0.00))+(ISNULL([12], 0.00)-ISNULL([012], 0.00)))as Total

 

                    FROM

                    (SELECT oinv.CardName,oinv.CardCode,inv1.ItemCode, inv1.Quantity AS FACTURA ,RIN1.Quantity AS CREDITO,

                    DATEPART(MONTH,oinv.DocDate) DATA_MES,DATEPART(MONTH,ORIN.DocDate) DATA_MES1

                              FROM  OINV   INNER JOIN INV1  ON OINV.DocEntry = INV1.DocEntry

                                                             INNER JOIN OCRD  ON  OINV.CardCode = OCRD.CardCode

                                                             INNER JOIN ORIN  ON OCRD.CardCode = ORIN.CardCode

                                                             INNER JOIN RIN1  ON ORIN.DocEntry = RIN1.DocEntry

                                                             where inv1.ItemCode= @articulo  and OCRD.GroupCode='100')as Mes_table

                              PIVOT           (SUM(FACTURA)FOR DATA_MES IN ( [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])) AS PIV_MES

                              PIVOT  (SUM(CREDITO)FOR DATA_MES1 IN ( [01], [02], [03], [04], [05], [06], [07], [08], [09], [010], [011], [012])) AS PIV_MES1

=====================================================================================================

Consulta 2

Si la ejecuto sin la unión del otro pivot para restar las notas de crédito me funciona perfectamente Solo necesito restarles las notas de crédito que es lo que no me da arriba me sale un resultado muy diferente, espero me puedan ayudar y en caso de resultar compartir la consulta con los compañeros.

Saludos

====================================================================================================

/*DECLARACION DE VARIABLES========================================================================================================================================================================*/

DECLARE @articulo varchar(100)='P00191'

DECLARE @mes INT= datepart(month,getdate())

/*INICIO DE CONSULTA========================================================================================================================================================================*/

          SELECT  CardCode as 'Codigo de Cliente',  CardName as 'Nombre del Cliente' ,ItemCode as 'Codigo del Articulo',ISNULL([1], 0.00)as 'Enero',

          ISNULL([2], 0.00)as'Febrero',ISNULL([3], 0.00) as 'Marzo', ISNULL([4], 0.00)as'Abril',ISNULL([5], 0.00)as'Mayo', ISNULL([6], 0.00)as'Junio',

          ISNULL([7], 0.00)as'Julio' , ISNULL([8], 0.00)as'Agosto', ISNULL([9], 0.00)as'Septiembre', ISNULL([10], 0.00)as'Octubre',ISNULL([11], 0.00)as'Noviembre',

          ISNULL([12], 0.00)as'Diciembre',(isnull([1],0)+ISNULL([2], 0.00)+ISNULL([3], 0.00)+ISNULL([4], 0.00)+ISNULL([5], 0.00)+ISNULL([6], 0.00)+ISNULL([7], 0.00)+

          ISNULL([8], 0.00)+ISNULL([9], 0.00)+ISNULL([10], 0.00)+ISNULL([11], 0.00)+ISNULL([12], 0.00)) as Total,((isnull([1],0)+ISNULL([2], 0.00)+ISNULL([3], 0.00)+

          ISNULL([4], 0.00)+ISNULL([5], 0.00)+ISNULL([6], 0.00)+ISNULL([7], 0.00)+ISNULL([8], 0.00)+ISNULL([9], 0.00)+ISNULL([10], 0.00)+ISNULL([11], 0.00)+

          ISNULL([12], 0.00))/@mes)as Promedio

/*FROM========================================================================================================================================================================*/

                    FROM (SELECT oinv.CardName,oinv.CardCode,inv1.ItemCode, inv1.Quantity , DATEPART(MONTH,oinv.DocDate) DATA_MES FROM OINV   INNER JOIN INV1  ON

                    OINV.DocEntry = INV1.DocEntry INNER JOIN OCRD  ON  OINV.CardCode = OCRD.CardCode where  inv1.ItemCode= @articulo and OCRD.GroupCode='100')

                    as Mes_table PIVOT                     (SUM(Quantity)FOR DATA_MES IN ( [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])) AS PIV_MES

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Buen día Ángel, ya probaste usar el informe análisis de ventas ? creo que te funcionaria , saludos

Former Member
0 Kudos

Hola buen día Alberto

Si conocía el reporte el problema es que el jefe requiere promedio y total, y pues veras que eso de exportarlo a excel y hacerlo manualmente no es una opción para el.

Sigo tratando de mostrar el resultado pero aun no doy con el espero poderla termina esta semana que ya me desespere.

Saludos

Former Member
0 Kudos

Comprendo estimado Ángel, modifique el Query, creo que esto es lo que quieres, saludos !

/*DECLARACION DE VARIABLES========================================================================================================================================================================*/

DECLARE @articulo varchar(100) = ''

DECLARE @mes INT= datepart(month,getdate())

set @articulo = (Select itemcode from OITM Z2 where Z2.Itemcode ='[%0]')

/*INICIO DE CONSULTA========================================================================================================================================================================*/

          SELECT 

          CardCode as 'Codigo de Cliente', CardName as 'Nombre del Cliente', ItemCode as 'Codigo del Articulo',

          ISNULL([1], 0.00) as 'Enero',

          ISNULL([2], 0.00) as 'Febrero',

          ISNULL([3], 0.00) as 'Marzo',

          ISNULL([4], 0.00) as 'Abril',

          ISNULL([5], 0.00) as 'Mayo',

          ISNULL([6], 0.00) as 'Junio',

          ISNULL([7], 0.00) as 'Julio' ,

          ISNULL([8], 0.00) as 'Agosto',

          ISNULL([9], 0.00) as 'Septiembre',

          ISNULL([10], 0.00) as 'Octubre',

          ISNULL([11], 0.00) as 'Noviembre',

          ISNULL([12], 0.00) as 'Diciembre',

/* CALCULO DEL TOTAL */         

          (isnull([1],0)+ISNULL([2], 0.00)+ISNULL([3], 0.00)+ISNULL([4], 0.00)+ISNULL([5], 0.00)+ISNULL([6], 0.00)+ISNULL([7], 0.00)+ISNULL([8], 0.00)+ISNULL([9], 0.00)+ISNULL([10], 0.00)+ISNULL([11], 0.00)+ISNULL([12], 0.00)) as Total,

/* CALCULO DEL PROMEDIO */                   

          ((isnull([1],0)+ISNULL([2], 0.00)+ISNULL([3], 0.00)+ISNULL([4], 0.00)+ISNULL([5], 0.00)+ISNULL([6], 0.00)+ISNULL([7], 0.00)+ISNULL([8], 0.00)+ISNULL([9], 0.00)+ISNULL([10], 0.00)+ISNULL([11], 0.00)+ISNULL([12], 0.00)) / @mes) as Promedio

/*FROM========================================================================================================================================================================*/

                    FROM

                        ( SELECT

                              oinv.CardName, oinv.CardCode, inv1.ItemCode, (inv1.Quantity ) as CANTIDAD, DATEPART(MONTH,oinv.DocDate) DATA_MES

                   

                              FROM

                                  OINV INNER JOIN INV1 ON  OINV.DocEntry = INV1.DocEntry AND YEAR(oinv.DocDate) = YEAR(GETDATE())          /* AQUI PUEDES CAMBIAR POR EL AÑO QUE GUSTES */

                                          INNER JOIN OCRD ON OINV.CardCode = OCRD.CardCode

                                       

                               WHERE 

                                    inv1.ItemCode= @articulo /* and OCRD.GroupCode='100' */                                                                         /* DESACTIVA EL COMENTARIO DEL GROUP CODE PARA PONERLO POR GRUPO */

UNION ALL

SELECT

                              orin.CardName, orin.CardCode, rin1.ItemCode, (rin1.quantity *-1) as CANTIDAD, DATEPART(MONTH,orin.DocDate) DATA_MES

                   

                              FROM

                                  ORIN INNER JOIN RIN1 ON  ORIN.DocEntry = RIN1.DocEntry AND Year(orin.Docdate) = YEAR(GETDATE())            /* AQUI PUEDES CAMBIAR POR EL AÑO QUE GUSTES */

                                          INNER JOIN OCRD ON ORIN.CardCode = OCRD.CardCode

                                       

                                       

                               WHERE 

                                     RIN1.ItemCode= @articulo /* and OCRD.GroupCode='100' */)                                                                      /* DESACTIVA EL COMENTARIO DEL GROUP CODE PARA PONERLO POR GRUPO */   

                       

                     As Mes_table PIVOT (SUM(CANTIDAD) FOR DATA_MES IN ( [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])) AS PIV_MES

Espero te sirva, saludos !

Former Member
0 Kudos

Angel, ya probaste hacerlo por XLReporter?

Lo otro que podrias probar es un reporte en CR que tuviera cada origen de datos por separado, para facilitar la consulta y que luego te juntara nos valores.

slds.

Former Member
0 Kudos

Agradezco a todos su apoyo en la solución de este problema y principalmente a ti Alberto muchas gracias efectivamente era lo que me faltaba.

Saludos

Answers (0)