on 05-21-2013 11:23 PM
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
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 !
User | Count |
---|---|
104 | |
12 | |
11 | |
6 | |
6 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.