Problema
Queremos replicar la expresión SQL CASE, actualmente no disponible, en Ms Access.
CASE
WHEN condición1 THEN resultado1
WHEN condición2 THEN resultado2
WHEN condiciónN THEN resultadoN
ELSE resultado
END;
En nuestro ejemplo para la columna Num queremos crear intervalos de 0 a >1000 con incrementos de 100. Usamos paréntesis y corchetes para denotar los intervalos semi-abiertos y semi-cerrados.
Solución
- SiInm
- Conmutador
SiInm:SiInm([Num]<=100, "(0,100]"
,SiInm([Num]<=200,"(100-200]",
SiInm([Num]<=300,"(200-300]",
SiInm([Num]<=400,"(300-400]",
SiInm([Num]<=500,"(400-500]",
SiInm([Num]<=600,"(500-600]",
SiInm([Num]<=700,"(600-700]",
SiInm([Num]<=800,"(700-800]",
SiInm([Num]<=900,"(800-900]",
SiInm([Num]<=1000,"(900-1000]",
SiInm([Num]>1000,">1000",""
)))))))))))
Usamos SiInm anidados para crear los intervalos. Necesitamos sere muy cuidadosos para incluir todos los paréntesis.
Conmutador:
Conmutador([Num]<=100,"(0,100]"
,[Num]<=200,"(100-200]"
,[Num]<=300,"(200-300]"
,[Num]<=400,"(300-400]"
,[Num]<=500,"(400-500]"
,[Num]<=600,"(500-600]"
,[Num]<=700,"(600-700]"
,[Num]<=800,"(700-800]"
,[Num]<=900,"(800-900]"
,[Num]<=1000,"(900-1000]"
,[Num]>1000,">1000")
Conmutador tiene una sintaxis más clara. Evitamos usar condiciones anidadas mediante pares de expresiones y valores.
Referencias
Entradas relacionadas
No hay comentarios:
Publicar un comentario