Funciones lógicas

La siguiente lista muestra las funciones lógicas que se pueden utilizar en expresiones.

Función Descripción
Case La declaración case tiene dos formas distintas.

Sencilla:

case Arg1 when Arg2 then Arg3 else Arg4 end

La expresión Arg1 se evalúa, y si Arg1 es igual a Arg2, se devuelve Arg3. Se pueden introducir varias expresiones when/then, que se evalúan de izquierda a derecha.

De búsqueda:

case when Arg1 then Arg2 else Arg3 end

Devuelve Arg2 si Arg1=true, y Arg3 si Arg1=false. Múltiple

Si pueden introducirse expresiones, se evalúan de izquierda a derecha.

Consulte la información correspondiente más abajo.

Ejemplo:

case when 1 < 2 then "a" when 1 < 3 then "b" else "c" end

case [Column] when 3 then "a" when 2 then "b" else "c" end

Para obtener más ejemplos, consulte la información a continuación y Columnas calculadas basadas en condiciones.

If(Arg1,Arg2,Arg3) Devuelve Arg2 si Arg1=true, y Arg3 si Arg1=false. Dado que Arg1 es booleano, el resultado suele ser una comparación. Arg2 y Arg3 pueden ser de cualquier tipo, pero deben coincidir en esto o ser nulos.

El segundo y tercer argumento solo procesan subconjuntos de las filas, lo cual afecta a todos los métodos de acumulación y basados en columnas. Consulte la información correspondiente más abajo.

Ejemplos:

If([Count] > 3, "many", "few")

If(true, null, null) -> (Vacío)

If(true, 1, null) -> 1

If(false, null, 2) -> 2

If(null, 1, 2) -> (Vacío)

If(1 < 2, "Small", "Big")-> Small

If([Column] Is Null,"0","has value")

Para obtener más ejemplos, consulte la información a continuación y Columnas calculadas basadas en condiciones.

Is Not Null Se usa en declaraciones con If o Case para determinar si una expresión produce un valor vacío o nulo.

Ejemplo:

If([Column] Is Not Null, "value was not null", "value was null")

Si una expresión incluye valores vacíos (nulos), puede usar la función SN (consulte Funciones de conversión) para sustituir los valores nulos por el valor especificado.

Is Null

Se usa en declaraciones con If o Case para determinar si una expresión produce un valor vacío o nulo.

Ejemplo:

If([Column] Is Null, "value was null", "value was not null")

Si una expresión incluye valores vacíos (nulos), puede usar la función SN (consulte Funciones de conversión) para sustituir los valores nulos por el valor especificado.

Más información sobre el uso de "if" en expresiones:

Cuando utiliza una declaración con "If" en una expresión, la condición del primer argumento limita los valores para su evaluación en el tercer argumento. Para comprender su funcionamiento, escoja una columna de número entero sencillo como ejemplo:

Col1
1
2
3

Introduzca una columna calculada con la siguiente expresión:

if(Col1 < 2, Max(Col1), Max(Col1))

Esta acción provocará una columna nueva con dos valores diferentes; uno para el caso en el que el máximo de todos los valores inferiores a 2 y otro que muestra el valor máximo para los demás valores (que también es el máximo de toda la columna):

Col1 if(Col1 < 2, Max(Col1), Max(Col1))
1 1
2 3
3 3

La función If está diseñada para dividir la columna en dos grupos y, después, continuar con la evaluación de la expresión en los grupos nuevos.

Si en cambio utiliza una expresión Percentile, obtendrá distintos resultados en la misma expresión de percentil en función de cómo haya dividido la primera condición la columna:

Col2
1
2
3
4
5
6
7
8
9
10

Introduzca dos columnas con las dos expresiones siguientes:

if (Col2 < 4, 0, Percentile(Col2, 70))

if (Col2 < 6, 0, Percentile(Col2, 70))

A continuación, obtendrá este resultado:

Col2 if (Col2 < 4, 0, Percentile(Col2, 70)) if (Col2 < 6, 0, Percentile(Col2, 70))
1 0 0
2 0 0
3 0 0
4 8,2 0
5 8,2 0
6 8,2 8,8
7 8,2 8,8
8 8,2 8,8
9 8,2 8,8
10 8,2 8,8
Como puede ver, el valor del percentil cambiará en función de cómo haya agrupado los datos la declaración "If".

Más información sobre el uso de Case en expresiones:

Al trabajar con expresiones Case, la condición posterior a "when" se calcula en toda la columna. El argumento posterior a "then" se calcula en las filas definidas por la condición "when". Si hay varios pares "when- then" incluidos en la expresión, un "then" queda limitado por todas las condiciones anteriores, así como por la última.

A continuación, se muestra un ejemplo con una columna de números enteros sencillos:

Col1
1
2
3
4
5
6
7
8

Introduzca dos columnas calculadas (llamadas Case Min y Case Max) con las siguientes expresiones:

Case Min:

case 
		when [Col1]<Avg([Col1]) then Min([Col1]) 
		when [Col1]<(Avg([Col1]) + 1) then Min([Col1]) 
		else Min([Col1]) 
end

Case Max:

case
		when [Col1] < Avg([Col1]) then Max([Col1])
		when [Col1] < (Avg([Col1]) + 1) then Max([Col1])
		else Max([Col1]) 
end

El resultado será el siguiente:

Col1 Case Min Case Max
1 1 4
2 1 4
3 1 4
4 1 4
5 5 5
6 6 8
7 6 8
8 6 8
Consulte también Funciones.