Buena tarde:
Tengo una query para conocer el importe neto de las ventas, el costo y la utilidad de mis artículos en un determinado periodo
Ahora necesito agregar una columna para determinar el:
% que representa el costo sobre la venta y el
% que represente la utilidad sobre la venta
Necesito que la formula que considere que puede haber productos vendidos sin cargo y servicios sin costo
"Me pueden ayudar / guiar / instruir / orientar, como crear dicha formula y evitar crear un error de división, por favor???
Ya intente algunas opciones pero todas sin exito!!
Les dejo la query original indicando donde necesito estas columnas
Saludos y gracias por su tiempo y comentarios…
SELECT T10.Catalogo, SUM(T10.Total)'cantidad', SUM(T10.Importe)'Importe', SUM(T10.Costo)'Costo', SUM(T10.Utilidad)'Utilidad'
FROM
(
SELECT
T2.[U_Catalogo] AS Catalogo,
SUM(T0.[Quantity]) AS Total,
SUM(T0.[LineTotal]) AS Importe,
SUM(T0.[StockValue]) AS Costo,
**aqui necesito agregar Costo / Importe = % del costo**
SUM(T0.[LineTotal]-T0.[StockValue]) AS Utilidad`
**aqui necesito agregar Utilidad / Importe = % del Utilidad**
FROM
INV1 T0
INNER JOIN OINV T1 ON T0.[DocEntry] = T1.[DocEntry]
INNER JOIN OITM T2 ON T0.[ItemCode] = T2.[ItemCode]
WHERE
T1.[CANCELED] = 'N'
AND T1.[DocDate] >=[%0]
AND T1.[DocDate] <=[%1]
AND T0.[ItemCode] <> 'Anticip Clientes'
Group By
T2.[U_Catalogo]
UNION ALL
SELECT
T2.[U_Catalogo] AS Catalogo,
-SUM(T0.[Quantity]) AS Total,
-SUM(T0.[LineTotal]) AS Importe,
-SUM(T0.[StockValue]) AS Costo,
**aqui necesito agregar Costo / Importe = % del costo**
-SUM((T0.[LineTotal]-T0.[StockValue])) AS Utilidad`
**aqui necesito agregar Utilidad / Importe = % del Utilidad**
FROM
RIN1 T0
INNER JOIN ORIN T1 ON T0.[DocEntry] = T1.[DocEntry]
INNER JOIN OITM T2 ON T0.[ItemCode] = T2.[ItemCode]
WHERE
T1.[CANCELED] = 'N' AND T1.[DocDate] >= [%0] AND T1.[DocDate] <=[%1] AND T0.[ItemCode] <> 'Anticip Clientes'
Group By
T2.[U_Catalogo]
)
T10
GROUP BY
T10.Catalogo
Hola @Sergio.lopez
Debes utilizar un CASE donde si el denominador es igual a 0 entonces no realizas division, de lo contrario efectuas la operacion
Ej. CASE WHEN Quantity = 0 THEN LineTotal ELSE LineTotal/Quantity END
Andres Ramirez Jaramillo 
3 Me gusta
Gracias Andres:
A veces lo fácil se complica, pero al mismo tiempo lo complicado puede ser tan sencillo
Ya lo aplique en una query de articulo por factura y quedo bien…
Ahora necesito aplicarlo en una query donde hay Facturas y Notas de crédito, y se agrupan por articulo o cliente, espero no se me complique el asunto con la nueva variable
Saludos y muchas gracias, por tu ayuda…
Buena tarde Andres:
Lo dicho, cuando intente agregar la formula para dividir el “costo” / “importe” y me muestre la proporción, me manda un error
Serias tan amable de ayudarme con esta situación, por favor ??
Saludos y gracias…
Te dejo la query de referncia:
SELECT T10.Region, sum(T10.Importe) 'Venta', sum(T10.Costo) 'Costo', sum(T10.Utilidad) 'Utilidad', sum(T10.%costo)
FROM
(
SELECT
T3.[descript] AS Region,
sum(T1.[LineTotal]) 'Importe',
sum(T1.[StockValue]) 'Costo',
**costo / importe AS %costo,**
sum(T1.[LineTotal]) - sum(T1.[StockValue]) 'Utilidad'
FROM
OINV T0
INNER JOIN INV1 T1 ON T0.[DocEntry] = T1.[DocEntry]
INNER JOIN OCRD T2 ON T0.[CardCode] = T2.[CardCode]
INNER JOIN OTER T3 ON T2.[Territory] = T3.[territryID]
WHERE
T0.[CANCELED] = 'N' AND T0.[DocDate] >=[%0] AND T0.[DocDate] <=[%1]
GROUP BY
T3.[descript]
union all
SELECT
T4.[descript] AS Region,
-sum(T1.[LineTotal]) 'Importe',
-sum(T1.[StockValue]) 'Costo',
**costo / importe AS %costo,**
-(sum(T1.[LineTotal]) - sum(T1.[StockValue])) 'Utilidad'
FROM
ORIN T0
INNER JOIN RIN1 T1 ON T0.[DocEntry] = T1.[DocEntry]
INNER JOIN OITM T2 ON T1.[ItemCode] = T2.[ItemCode]
INNER JOIN OCRD T3 ON T0.[CardCode] = T3.[CardCode]
INNER JOIN OTER T4 ON T3.[Territory] = T4.[territryID]
WHERE
T0.[CANCELED] = 'N' AND T0.[DocDate] >=[%0] AND T0.[DocDate] <=[%1] and T2.[ItemCode] <> 'Anticip Clientes'
GROUP BY
T4.[descript]
)
T10
GROUP BY
T10.Region