Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola, tengo la siguiente duda: yo tengo 3 campos dia, mes y año. Lo que yo necesito es saber el número de dias que hay en esa selección.
Por ejemplo si selecciona los 3 campos, seria:
(GetSelectedCount(dia) * GetSelectedCount(año)* GetSelectedCount(mes)
Ahi si tendría el número de días. Si la selección solo fuera años, seria tambien fácil, porque solo habría que multiplicar el número de años por 365 si son años completos y el actual por el número de dias que se lleven hasta el dia de hoy. El dia de hoy sería con Today(), pero el número de dias hasta ese día no se con que función seria.
Pero el cálculo que me resulta realmente complicado es en el que el usuario me haga solo una selección de meses y años. Porque no todos los meses tienen el mismo número de dias, no sirve hacer
31 * getselectedcount(año)*getselectedcount(mes)
Si alguien se le ocurre alguna sugerencia.....
Un saludo
Hola Jonay:
Acabo de responderte, pero la respuesta esta 'bajo moderación' ... a veces pasa. Tardará un buen rato en estar disponible en la comunidad.
Saludos,
Joaquín
A ver, un calendario maestro es lo que estoy creando, lo que llamo yo calendario que añado los campos año, día y mes. Y el campo que pongo a 1, que luego utilizo para saber cuantos días son. Y eso me genera todos los dias posibles entre la fecha minima que le ponga y la fecha actual. Mi problema es que en la tabla "ventas" habrá registros que no dispongan de todas las fechas posibles y el problema es que como no hay coincidencia con esa fecha pues ese dia no se tiene en cuenta, y por ejemplo si el mes tiene 30, pero hay 4 dias que no han habido ventas para ese registro solo me lo contempla como 26. Entonces los calculos salen desvirtuados y no calculan lo que yo quiero
Un saludo
Por favor, copia las sentencias load del calendario y de la tabla de ventas (o de lo que sea) para que pueda mirarlo.
También pon la fórmula de la expresión que quieres calcular
Así genero el calendario:
let vMin = num('09/09/2014'); //mm/dd/YYYY
let vMax = num(today());
/* Genero todos los días que existen entre la fecha primera que tengo peticiones, y la fecha actual*/
Calendario:
load
date(IterNo() + $(vMin)-1) as fecha
AutoGenerate 1 while IterNo() + $(vMin) -1 <= $(vMax);
load distinct(fecha), year(fecha) as año, Num(Month(fecha)) as mes, Day(fecha) as dia,
1 as contadorDias
resident Calendario;
En mi tabla ventas, tengo muchos campos, pero que afecten a la fecha tengo el campo "fecha"
Ventas:
SELECT ID, ....,date_format(pe.fecha,'%Y-%m-%d') as fecha
from tabla
where date_format(pe.fecha,'%Y-%m-%d') >= '2014-09-09';
Como ves en ambas tablas el campo fecha se llama exactamente igual
Posteriormente tengo que hacer varios calculos, pero si sale con uno el resto es similar, por ejemplo:
(count({<año = $::año, mes = $::mes , dia = $::dia>}ID))/sum(contadorDias)
Contar los id, de los datos seleccionados y dividirlo entre el sum o el count (en este caso es igual) de los días que transcurran
Prueba esto:
(count({<año = $::año, mes = $::mes , dia = $::dia>}ID)) / GetPossibleCount(fecha)
De esta manera que dices, me da correcto el número de días siempre que no seleccione un id. Si yo selecciono un id ya se me relaciono con los datos que hay para ese id, y ya no tiene en cuenta todas las fechas, sino las que afecte a ese id concreto
No hay forma de calcular el número de días de manera correcta
Una duda a raiz de esto que me acaba de surgir, yo creo primeramente la tabla ventas y luego creo el calendario maestro. No se si eso puedo influir a la hora de la forma que se relaciona.
Hacerlo en orden inverso no se, porque como la tabla ventas se crea a partir de un select, no sabría como poner resident en la tabla calendario, para que sepa que ese campo fecha ya existe y lo tiene que relacionar
Lo digo por si esto puede influir tambien en que no me este dando el resultado correcto
Un saludo
(count({<año = $::año, mes = $::mes , dia = $::dia>}ID)) / ( GetPossibleCount(fecha) + GetPossibleCount(fecha) )
La relación es la misma independientemente del orden de su creación, dicha relación se establece por nombre de campo
Pero inevitablemente cuando haces un LOAD ... Resident esa tabla tiene que existir.
Lo siento, se me ha ido la mano
(count({<año = $::año, mes = $::mes , dia = $::dia>}ID)) / ( GetPossibleCount(fecha) +GetExcludedCount(fecha) )