2020-02-27

La expresión SQL CASE en Ms Access

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

  1. SiInm
  2. 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.

  3. Conmutador
  4. 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

Nube de datos