Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola, estoy con una expresión que me está costando descifrarla.
Lo que quiero es contar cuantos clientes han comprado en los 3 meses anteriores al seleccionado y el mes actual, para lo cual estoy utilizando:
count(TOTAL {$<Mes={[>=$(=only(Mes)-3)]}>}DISTINCT Clientes)
Pero como utilizo los meses como la unión entre el año y el mes (ejemplo: 201412, 201501, 201502, etc.) se me complica cuando el usuario selecciona el mes de Enero, Febrero o Marzo ya que la expresión toma como Mes - 3 :
- Si selecciono Enero, entonces Mes=201501 y Mes - 3 =201598, que no existe. Debería tomar Mes - 89
- Si selecciono Febrero, entonces Mes=201502 y Mes - 3 =201599, que no existe. Debería tomar Mes - 90
- Si selecciono Marzo, entonces Mes=201503 y Mes - 3 =201500, que no existe. Debería tomar Mes - 91
Mi idea es establecer un rango de >=Mes -89 y <=Mes-91 pero no se como hacerlo.
Intenté:
count(TOTAL {$<Mes={[>=$(=only(Mes)-89)] and [<=$(=only(Mes)-91)] }>}DISTINCT Clientes)
pero no funcionó. A alguien se le ocurre?
Gracias!
Lo que te ocurre es que estás utilizando un campo que no tiene el formato fecha.
Una solución es que transformes los campos que actualmente tienes como YYYYMM en campos tipo fecha como MonthYear, y a partir de ahí podrás sumar o restar meses tranquilamente
Si quieres subirme el fichero lo analizo y te propongo solución.
Hola Enrique gracias por tu tiempo, te paso el documento. Gracias
Hola Enrique, se te ha ocurrido algo?
Si, he estado analizando los datos, en el poco tiempo que he tenido.
Yo haría un cambio importante porque creo que todos los problemas que tienes vienen del mismo sitio.. Me explico.
estás utilizando un campo Mes como YYYYMM pero NO es un campo FECHA y para trabajar con él como un campo fecha deberías transformarlo.
Si esto lo haces en el script de carga mejor.
Espero que te ayude.
Hola Enrique, hice lo que me has propuesto. Me queda en el formato DDMMYYYY, pero al operar con set analisys:
para Diciembre MesVta= 01/12/2014 y para MesVta - 1 = 31/11/2014 y si utilizo month me da error.
Tienes que utilizar la función AddMonth
En el scrip estoy utilizando:
if((num(month(Fecha)))<10, Year(Fecha)&0&(num(month(Fecha))), Year(Fecha)&(num(month(Fecha)))) as MesVta,
y agregando lo propuesto por tí:
makedate(Left(if((num(month(Fecha)))<10, Year(Fecha)&0&(num(month(Fecha))), Year(Fecha)&(num(month(Fecha)))), 4), date(mid(if((num(month(Fecha)))<10, Year(Fecha)&0&(num(month(Fecha))), Year(Fecha)&(num(month(Fecha)))), 5,2), 01)) as MesVta2
Para utilizar un campo fecha con el formato YYYYMM, puedes transformarlo así:
MesActual = date(monthstart(Fecha), 'YYYY-MM')
en lugar de montarlo tú porque pierde la característica de Fecha.
Para sacar después el mes ANTERIOR, entonces utiliza:
MesAnterior = (AddMonths(MesActual,-1)