Trabajando con expresiones CASE

Conozca sobre el formato y los componentes de las expresiones CASE y algunas expresiones CASE utilizadas frecuentemente que puede construir para crear campos calculados en Reportes.

Cómo funciona

Una expresión CASE es una expresión condicional que puede utilizar para cambiar la forma en que se representan los datos. Las expresiones CASE permiten que una instrucción devuelva uno de varios resultados posibles, dependiendo de cuál de las varias condiciones se evalúa como verdadera.

Puede crear campos calculados utilizando expresiones CASE usando el generador de fórmulas Simple.

Si desea obtener más información, consulte Creación de campos calculados.

Formato de la expresión CASE

El formato de una expresión CASE es el siguiente:

CASE
WHEN (CUANDO) esto es cierto THEN (ENTONCES) devuelve esto
WHEN (CUANDO) esto es cierto THEN (ENTONCES) devuelve esto
...
ELSE (SI NO LO ES) devuelve esto
END

Componentes de una expresión CASE

Componente Descripción
CASE el componente inicial en una expresión CASE
WHEN

define una condición, como WHEN (CUANDO) ¿Asunto cerrado? Igual a 0

Múltiples componentes de WHEN pueden estar en una expresión CASE. Los componentes WHEN deben preceder al componente ELSE.

THEN

enlaza al componente WHEN y da instrucciones a Reportes sobre qué devolver cuando se cumple la condición

Por ejemplo, WHEN (CUANDO) ¿Asunto cerrado? Igual a 0 THEN 'Asunto abierto'

ELSE un componente que se usa para informar a Reportes qué hacer cuando no se cumple ninguna de las condiciones WHEN
END

define el final de la expresión CASE

Para que la expresión CASE sea válida, debe agregar END (FIN).

Orden de ejecución de la expresión CASE

Las expresiones CASE se ejecutan en orden de izquierda a derecha. Si un campo concuerda con más de una condición WHEN, devolverá el resultado de la primera condición.

Por ejemplo, si tiene un proyecto llamado Proyecto X y un campo calculado con la siguiente lógica, el campo mostrará 'SOX':

CASE
WHEN Nombre del proyecto = Proyecto X THEN 'SOX'
WHEN Nombre del proyecto No es nulo THEN 'Nómina'
ELSE 'Viajes y entretenimiento'
END

Expresiones CASE utilizadas con frecuencia

La tabla a continuación proporciona una lista de las expresiones CASE usadas frecuentemente que puede compilar usando el generador de fórmulas Simple:

Nota

La hora del servidor de Reportes es UTC y el campo Fecha actual se muestra en UTC. UTC es un estándar de hora global que reemplazó a la Hora del Meridiano de Greenwich (GMT). Para la mayoría de los fines, ambos estándares son equivalentes. Para los datos de fechahora basados en UTC, si la conversión a UTC cruza el límite de la medianoche, la fecha se ajusta en un día.

Nombre del campo calculado Expresiones CASE Descripción Otras consideraciones

Estado_de_la_prueba

CASE WHEN Preparador de la prueba de control IS NOT NULL AND Revisor de detalle de la prueba de control IS NOT NULL AND Revisor general de la prueba de control IS NOT NULL THEN 'Completo'

WHEN Preparador de la prueba de control IS NOT NULL OR Revisor de detalle de la prueba de control IS NOT NULL OR Revisor general de la prueba de control IS NOT NULL THEN 'En proceso' ELSE 'No iniciado' END

muestra un resumen de la prueba de control con un estado de la prueba calculado
  • agregar filtro y sección = Nombre del proyecto
  • suprimir duplicados para Nombre del objetivo, URL del objetivo y Estado del control
  • aplicar una función de agregación Recuento de valores diferentes en Identificador del sistema del control
  • aplicar el formato condicional para mostrar colores específicos con los estados de la prueba (Rojo = No iniciado, Amarillo = En proceso, Verde = Completo)
  • subtotal con agregado Recuento en el campo Nombre del objetivo

Control_probado

Control_aprobó

Control_falló

CASE ¿Es efectivo el control? IS NOT NULL THEN 1 ELSE 0 END

CASE ¿Es efectivo el control? = 1 THEN 1 ELSE 0 END

CASE WHEN ¿Es efectivo el control? = 0 THEN 1 ELSE 0 END

muestra un resumen de las pruebas de control que indica si el control aprobó o falló
  • use la vista Trabajo de campo
  • utilice los filtros Nombre del proyecto en la lista y Nombre del proyecto no está en la lista
  • subtotalice el campo Nombre del proyecto
  • suprima campos duplicados
Está_vencido

CASE WHEN ¿Asunto cerrado? = 1 THEN 'Cerrado' 

WHEN Asunto corregido IS NULL THEN ''

WHEN Fecha actual < Asunto corregido THEN 'No' ELSE 'Sí' END

  • muestra si se ha vencido o no la etapa de acciones correctivas del asunto
  • similar a Sin_vencer_aún

Las condiciones se ejecutan en orden de izquierda a derecha. Si un campo concuerda con más de una condición WHEN, devolverá el resultado de la primera condición.

Es_antigüedad_vencida

CASE WHEN Asunto cerrado = 0 AND Días para la corrección < 0 THEN Días para la corrección * 1 ELSE 0 END

muestra la cantidad de días restantes para el Fin del plazo para las acciones correctivas
  • Días para la corrección es un campo que muestra la cantidad de días (positivos) que quedan para el Fin del plazo para las acciones correctivas.
  • los asuntos vencidos se muestran como números negativos.
  • si el asunto no está vencido, se devuelve 0.
Es_contenedor_vencido

CASE WHEN Asunto cerrado = 0 AND Días para la corrección <= -1 AND Días para la corrección >= -30 THEN '0-30'

WHEN Asunto cerrado = 0 AND Días para la corrección <= -31 AND Días para la corrección >= -60 THEN '31-60'

WHEN Asunto cerrado = 0 AND Días para la corrección <= -61 AND Días para la corrección >= -90 THEN '61-90'

WHEN Asunto cerrado = 0 AND Días para la corrección <= -91 '91+ ELSE 'Actual' END

asigna contenedores de antigüedad a la cantidad de días de atraso del asunto.
  • asigna asuntos a los contenedores en función de la cantidad de días
  • si ninguna de las condiciones se cumple, se devuelve 'Actual'.
Sin_vencer_aún

CASE WHEN Asunto cerrado = 0 AND Fecha actual < Asunto corregido AND Asunto corregido IS NOT NULL THEN 1

WHEN Asunto cerrado = 0 AND Asunto corregido IS NULL THEN 0

WHEN Asunto cerrado Close = 0 AND Asunto corregido <= Fecha actual AND Asunto corregido IS NOT NULL THEN 0

WHEN Asunto cerrado = 1 THEN 0 ELSE 9999 END

similar a Está_vencido

Maneje las siguientes condiciones:

  • el asunto no está cerrado AND (Y) la fecha actual es anterior a la fecha de las acciones correctivas AND (Y) la fecha de las acciones correctivas no está en blanco, entonces 1 (se cuenta como aún no vencido).
  • el asunto no está cerrado AND (Y) la fecha de las acciones correctivas está en blanco, entonces 0 (no se cuenta, fecha de vencimiento desconocido).
  • el asunto no está cerrado AND (Y) la fecha de las acciones correctivas no está en blanco y es anterior o igual a la fecha actual, entonces 0 (no se cuenta, está vencido)
  • el asunto está cerrado, entonces 0 (no se cuenta, no cumple)
  • Si ninguna de las condiciones es verdadera, se devuelve 9999.