Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buenos dias acudo a ustedes porque ya he intentado de todo y no encuentro explicacion tengo 2 expresiones con aggr la primera me da 0.03 y la segunda me da como resultado 0.02, pero al hacer la resta de las 2 el resultado me da 0.0020, porque podria estar ocurriendo esto??:
Expresion 1)
////pr act
sum(aggr(
(
sum(DISTINCT{<[Variable de
liquidacion]={'K.P.C. Transporte'},[Número de la orden interna]={'22000006'},[Tipo de
liquidacion]={'P'}>}
if(IsNull([Detalle
liquidacion])=-1,0,[Detalle liquidacion]))
/
sum(total DISTINCT{<[Variable de
liquidacion]={'K.P.C. Transporte'},[Número de la orden interna]={'22000006'},[Tipo de
liquidacion]={'P'}>}
if(IsNull([Detalle
liquidacion])=-1,0,[Detalle liquidacion]))
*
sum(distinct{<[Variable de
liquidacion]={'Uso de redes'},[Número de la orden interna]={'22000006'},[Tipo de
liquidacion]={'P'}>}
if(IsNull([Detalle
liquidacion])=-1,0,[Detalle liquidacion]))
)
,
[Número
de la orden interna],[Número de servicio],[NOMBRE_SERVICIO]
))
Expresion 2)
//pr ant
sum(aggr(
(
sum(DISTINCT{<
Año={$(= Max(Año))},Mes={$(=
Month(AddMonths(Max(Fecha),-1)))},[Variable de liquidacion]={'K.P.C.
Transporte'},[Número de la orden interna]={'22000006'},[Tipo de
liquidacion]={'P'}>}
if(IsNull([Detalle
liquidacion])=-1,0,[Detalle liquidacion]))
/
sum(total DISTINCT{<
Año={$(= Max(Año))},Mes={$(=
Month(AddMonths(Max(Fecha),-1)))},[Variable de liquidacion]={'K.P.C.
Transporte'},[Número de la orden interna]={'22000006'},[Tipo de
liquidacion]={'P'}>}
if(IsNull([Detalle
liquidacion])=-1,0,[Detalle liquidacion]))
*
sum(distinct{<
Año={$(= Max(Año))},Mes={$(=
Month(AddMonths(Max(Fecha),-1)))},[Variable de liquidacion]={'Uso de
redes'},[Número de la orden interna]={'22000006'},[Tipo de
liquidacion]={'P'}>}
if(IsNull([Detalle
liquidacion])=-1,0,[Detalle liquidacion]))
)
,
[Número
de la orden interna],[Número de servicio],[NOMBRE_SERVICIO]
))
para hacer la resta tomo toda la expresion 2 tal cual como esta y se la resto a la expresion 1 tal cual como esta asi como muestro, cabe notar que ambas expresiones y la que guarda el resultado son del mismo tipo de datos money
sum(aggr(
(
sum(DISTINCT{<[Variable de liquidacion]={'K.P.C. Transporte'},[Número de la orden interna]={'22000006'},[Tipo de liquidacion]={'P'}>}
if(IsNull([Detalle liquidacion])=-1,0,[Detalle liquidacion]))
/
sum(total DISTINCT{<[Variable de liquidacion]={'K.P.C. Transporte'},[Número de la orden interna]={'22000006'},[Tipo de liquidacion]={'P'}>}
if(IsNull([Detalle liquidacion])=-1,0,[Detalle liquidacion]))
*
sum(distinct{<[Variable de liquidacion]={'Uso de redes'},[Número de la orden interna]={'22000006'},[Tipo de liquidacion]={'P'}>}
if(IsNull([Detalle liquidacion])=-1,0,[Detalle liquidacion]))
)
,
[Número de la orden interna],[Número de servicio],[NOMBRE_SERVICIO]
))
-
sum(aggr(
(
sum(DISTINCT{<
Año={$(= Max(Año))},Mes={$(= Month(AddMonths(Max(Fecha),-1)))},[Variable de liquidacion]={'K.P.C. Transporte'},[Número de la orden interna]={'22000006'},[Tipo de liquidacion]={'P'}>}
if(IsNull([Detalle liquidacion])=-1,0,[Detalle liquidacion]))
/
sum(total DISTINCT{<
Año={$(= Max(Año))},Mes={$(= Month(AddMonths(Max(Fecha),-1)))},[Variable de liquidacion]={'K.P.C. Transporte'},[Número de la orden interna]={'22000006'},[Tipo de liquidacion]={'P'}>}
if(IsNull([Detalle liquidacion])=-1,0,[Detalle liquidacion]))
*
sum(distinct{<
Año={$(= Max(Año))},Mes={$(= Month(AddMonths(Max(Fecha),-1)))},[Variable de liquidacion]={'Uso de redes'},[Número de la orden interna]={'22000006'},[Tipo de liquidacion]={'P'}>}
if(IsNull([Detalle liquidacion])=-1,0,[Detalle liquidacion]))
)
,
[Número de la orden interna],[Número de servicio],[NOMBRE_SERVICIO]
))
Has intentado agrupar cada una de las expresiones con round() ?
Por ahí hay una o varias discusiones acerca de cómo QlikView trata los decimales y porqué a veces dan resultados inesperados o no tan exactos. Busca una discussión de John Witherspoon... creo que es la mejor.
Sin embargo, utilizar round para definiir el número de decimales por lo general es suficiente.
Has intentado agrupar cada una de las expresiones con round() ?
Por ahí hay una o varias discusiones acerca de cómo QlikView trata los decimales y porqué a veces dan resultados inesperados o no tan exactos. Busca una discussión de John Witherspoon... creo que es la mejor.
Sin embargo, utilizar round para definiir el número de decimales por lo general es suficiente.
Muchisimas gracias Carlos de veras me sirvio mucho