CHOOSE

La función CHOOSE en SQL Server es una función de ayuda que devuelve un elemento de una lista de valores basada en su posición de índice. Es útil cuando necesitas seleccionar un valor de una lista de opciones dependiendo de un índice numérico.

Sintaxis

CHOOSE ( index, val1, val2, ..., valN )
  • index: Un número entero que especifica cuál de los valores seleccionar. Debe estar en el rango de 1 a N (donde N es el número de valores en la lista).
  • val1, val2, …, valN: La lista de valores de la cual se seleccionará uno en función del índice.

Uso y Ejemplos

1. Seleccionar un valor simple

SELECT CHOOSE(2, 'Apple', 'Banana', 'Cherry') AS SelectedFruit;

Este ejemplo devuelve ‘Banana’ porque el índice es 2 y ‘Banana’ es el segundo valor en la lista.

2. Usar con columnas de una tabla

Puedes usar CHOOSE para seleccionar valores de columnas en una tabla. Supongamos que tienes una tabla productos con columnas id, nombre, y categoria.

SELECT
id,
nombre,
categoria,
CHOOSE(2, 'Disponible', 'Agotado', 'En espera') AS Estado
FROM
productos;

Este ejemplo siempre devuelve ‘Agotado’ para cada fila porque el índice es 2.

3. Usar con valores calculados

Puedes combinar CHOOSE con otras funciones o cálculos para determinar el índice dinámicamente.

SELECT
id,
nombre,
ventas,
CHOOSE(
CASE
WHEN ventas < 100 THEN 1
WHEN ventas BETWEEN 100 AND 500 THEN 2
ELSE 3
END,
'Bajo',
'Medio',
'Alto'
) AS NivelVentas
FROM
productos;

En este ejemplo, CHOOSE devuelve ‘Bajo’, ‘Medio’, o ‘Alto’ basado en el valor de ventas.

Ventajas y Usos

  1. Simplicidad: CHOOSE proporciona una forma simple y directa de seleccionar valores de una lista sin escribir múltiples condiciones CASE.
  2. Legibilidad: El código puede ser más legible y fácil de mantener en comparación con anidamientos complejos de CASE o IF.
  3. Flexibilidad: Es útil en escenarios donde tienes un conjunto fijo de resultados posibles y necesitas seleccionar uno basado en un índice.

Limitaciones

  1. Rango del índice: El índice debe estar en el rango de 1 a N, donde N es el número de valores en la lista. Si el índice está fuera de este rango, la función devuelve NULL.
  2. Número de valores: La función puede manejar hasta 254 valores. Si necesitas más, necesitarás usar otra lógica.

Ejemplo:

En el siguiente ejemplo se usa la función Month para extraer el mes de una fecha, para que de acuerdo al número de mes coloque el mes en letras, usaremos la función CHOOSE, agregando el listado de nombre de los meses en el orden correspondiente.

Select c.companyname, o.orderid, o.orderdate,
    CHOOSE(MONTH(o.[orderdate]), ‘Enero’, ‘Febrero’, ‘Marzo’, ‘Abril’, ‘Mayo’, ‘Junio’, ‘Julio’, ‘Agosto’, ‘Septiembre’, ‘Octubre’, ‘Noviembre’, ‘Diciembre’) AS NombreMes
from customers as c inner join orders o
on c.CustomerID=o.customerid
 
Pongamos atención al parametro que tiene el valor a analizar.
 
Resultado:

Resumen

La función CHOOSE en SQL Server es una herramienta útil para seleccionar un valor de una lista basada en un índice. Simplifica el código y mejora la legibilidad cuando necesitas seleccionar entre varias opciones predefinidas. Es especialmente útil en reportes y transformaciones de datos donde se requiere una selección directa y sencilla de valores.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.