on 08-20-2014 7:17 PM
Estoy haciendo un reporte que me de las ventas por mes sumarizadas, asi mismo me de el stock disponible que hay en el almacen en ese momento, lo estoy haciendo por medio de reporting services por que necesito que personas que no tienen SAP lo consulten, por lo cual se ven parametros como @algo pero para el caso de sap solo cambia eso. Mi problema es que me esta duplicando los resultados, es decir....si en ese mes hubo 2 ventas me pone 2 veces el articulo cuando deberia estar sumarizado por mes, si se hicieron 4 ventas de un articulo pues me sale 4 veces el mismo.
El query es este:
SELECT DISTINCT T1.ItemCode as Articulo, T1.[Dscription] as Descripcion,T1.WhsCode,
CASE WHEN Month(T0.Docdate)=1 then (T1.Quantity) else 0 END as Enero,
CASE WHEN Month(T0.Docdate)=2 then (T1.Quantity) else 0 END as Febrero,
CASE WHEN Month(T0.Docdate)=3 then (T1.Quantity) else 0 END as Marzo,
CASE WHEN Month(T0.Docdate)=4 then (T1.Quantity) else 0 END as Abril,
CASE WHEN Month(T0.Docdate)=5 then (T1.Quantity) else 0 END as Mayo,
CASE WHEN Month(T0.Docdate)=6 then (T1.Quantity) else 0 END as Junio,
CASE WHEN Month(T0.Docdate)=7 then (T1.Quantity) else 0 END as Julio,
CASE WHEN Month(T0.Docdate)=8 then (T1.Quantity) else 0 END as Agosto,
CASE WHEN Month(T0.Docdate)=9 then (T1.Quantity) else 0 END as Septiembre,
CASE WHEN Month(T0.Docdate)=10 then (T1.Quantity) else 0 END as Octubre,
CASE WHEN Month(T0.Docdate)=11 then (T1.Quantity) else 0 END as Noviembre,
CASE WHEN Month(T0.Docdate)=12 then (T1.Quantity) else 0 END as Diciembre,
ISNULL((SELECT DISTINCT (SUM(Y.InQty)-SUM(Y.OutQty))FROM OINM Y WHERE Y.ItemCode = T1.ItemCode AND Y.Warehouse = T1.WhsCode),0) as 'Stock'
FROM OINV T0
INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN OSLP T2 ON T0.SlpCode = T2.SlpCode
INNER JOIN OITW T3 ON T1.ItemCode = T3.ItemCode
WHERE T0.Docdate>=@Inicial and T0.Docdate<=@Final AND T1.TargetType <> '14' AND T1.WhsCode=@Almacen
Order by T1.ItemCode
Carlos, creo que te da mas lineas porque no estas sumando la cantidad vendida en el mes tu case podria ser:
CASE WHEN Month(T0.Docdate)=1 then SUM(T1.Quantity) else 0 END as Enero
para que sume lo vendido en Enero.
Una observacion si lo haces asi con CASE sino estoy mal el resultado final seria asi para un producto:
Item Enero Febrero Marzo
item1 10 0 0
item1 0 10 0
item1 0 0 10
pero has tus pruebas, si el resultado es el que te indico y no es como lo necesitas podrias probarlo con subquerys.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Gracias Alejandro, con el SUM antes del CASE me funciono.
Dejo aqui como quedo el query, le quite algunas cosas que no estaba usando.
SELECT DISTINCT T1.ItemCode as Articulo,T1.[Dscription] as Descripcion,T1.WhsCode as Almacen,
SUM(CASE WHEN Month(T1.Docdate)=1 then (T1.Quantity) else 0 END) as Enero,
SUM(CASE WHEN Month(T1.Docdate)=2 then (T1.Quantity) else 0 END) as Febrero,
SUM(CASE WHEN Month(T1.Docdate)=3 then (T1.Quantity) else 0 END) as Marzo,
SUM(CASE WHEN Month(T1.Docdate)=4 then (T1.Quantity) else 0 END) as Abril,
SUM(CASE WHEN Month(T1.Docdate)=5 then (T1.Quantity) else 0 END) as Mayo,
SUM(CASE WHEN Month(T1.Docdate)=6 then (T1.Quantity) else 0 END) as Junio,
SUM(CASE WHEN Month(T1.Docdate)=7 then (T1.Quantity) else 0 END) as Julio,
SUM(CASE WHEN Month(T1.Docdate)=8 then (T1.Quantity) else 0 END) as Agosto,
SUM(CASE WHEN Month(T1.Docdate)=9 then (T1.Quantity) else 0 END) as Septiembre,
SUM(CASE WHEN Month(T1.Docdate)=10 then (T1.Quantity) else 0 END) as Octubre,
SUM(CASE WHEN Month(T1.Docdate)=11 then (T1.Quantity) else 0 END) as Noviembre,
SUM(CASE WHEN Month(T1.Docdate)=12 then (T1.Quantity) else 0 END) as Diciembre,
ISNULL((SELECT DISTINCT (SUM(Y.InQty)-SUM(Y.OutQty))FROM OINM Y WHERE Y.ItemCode = T1.ItemCode AND Y.Warehouse = T1.WhsCode),0) as 'Stock'
FROM INV1 T1
WHERE T1.Docdate>=@Inicial and T1.Docdate<=@Final AND T1.TargetType <> '14' AND T1.WhsCode=@Almacen
Group By T1.ItemCode,T1.[Dscription],T1.WhsCode
Order by T1.ItemCode
Muchas Gracias por su ayuda.
User | Count |
---|---|
98 | |
11 | |
11 | |
6 | |
6 | |
4 | |
4 | |
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.