Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola a todos, tengo la siguiente situación:
Una tabla de intervalos:
Servicio | ImporteDesde | ImporteHasta | Porcentaje |
S1 | 0 | 5000 | 2 |
S1 | 5001 | 15000 | 3 |
S1 | 15001 | 999999 | 4 |
S2 | 0 | 10000 | 2 |
S2 | 10001 | 20000 | 3 |
S2 | 20001 | 999999 | 4 |
Por otra parte tengo una tabla de servicios con unos importes:
Servicio | CosteServicio |
S1 | 6.000,00 € |
S2 | 22.000,00 € |
Necesitaría obtener la siguiente tabla de resultado:
CodServicio | CosteServicio | Porcentaje |
S1 | 6.000,00 € | 3 |
S2 | 22.000,00 € | 4 |
Es decir dado un coste de servicio obtener dentro del intervalo de porcentajes del servicio cual es el que le corresponde.
Para el servicio S1 el valor 6.000 cae en la fila de intervalos correspondiente al porcentaje 3
Para el servicio S2 el valor 22.000 cae en la fila de intervalos correspondiente al porcentaje 4
Gracias de antemano.
Hola Pablo, si es en el script puedes usar IntervalMatch() para identificar la linea que corresponda de la 1ª tabla; y para crear una tabla como esa puedes usar joins para llevar el porcentaje a la 2ª tabla y luego eliminar lo que sobre, algo así:
//Cargar Tabla1 y Tabla2
Left Join (Tabla2)
IntervalMatch (CosteServicio, Servicio) LOAD ImporteDesde, ImporteHasta, Servicio Resident Tabla1;
Left Join (Tabla2) LOAD ImporteDesde, ImporteHasta, Servicio, Porcentaje Resident Tabla1;
DROP Table Tabla1;
DROP Fields ImporteDesde, ImporteHasta;
También puedes hacer el join directamente con Tabla1 y luego quedarte solo con los registros que tengan valor en CosteServicio.
Saludos.
Hola Rubén, el problema es que los valores del CosteServicio son dinámicos.
Existe una tabla como esta:
Date Servicio CosteServicio
01/01/2016 S1 3.000
01/01/2016 S1 3.000
01/01/2016 S2 11.000
01/01/2016 S2 1.000
01/01/2016 S2 10.000
02/01/2016 S1 5.000
02/01/2016 S1 20.000
Cuando el usuario selecciona una fecha, coste servicio toma unos valores, por ejemplo cuando se selecciona el 01/01/2016 los valores de coste servicio son estos, pero para otra seleccion son otros.
Servicio CosteServicio
S1 6.000
S2 22.000
No puedo hacerlo con un IntervalMatch, ha de ser una selección dinámica. Dada una selección del usuario se debe de calcular el porcentaje que toca a cada servicio de forma dinámica.
Hola Pablo, creo que no he entendido algo... si existe una tabla con un coste de servicio por fecha ¿Por qué no se le puede añadir el porcentaje directamente a esa tabla?... ¿O es que esa tabla ya es un gráfico?
En un gráfico se podría obtener usando
Aggr(If(CosteServicio>=ImporteDesde and CosteServicio<=ImporteHasta, Porcentaje), Servicio, ImporteDesde)
Seguramente habrá una forma mejor, pero si el valor cambia por fila no creo que te sirva usar set analisys ni $()
Hola Ruben, gracias por la respuesta, la medición correcta que me han comentado en otro hilo que tenía abierto es casi idéntica a la que me propones.
=Aggr(If(Sum(CosteServicio) >= ImporteDesde and Sum(CosteServicio) <= ImporteHasta, Porcentaje), Servicio, ImporteDesde, ImporteHasta)
Un saludo.