viernes, 21 de agosto de 2009

CASE dentro de WHERE


Cuando necesitamos desplegar información podemos utilizar un CASE dentro de un WHERE. Esto no se si alguien lo hizo antes, pero recientemente se me dio la necesidad de hacer un procedimiento almacenado en SQL Server con la opción de poder seleccionar los datos de uno o todos los registros en una misma consulta. Aqui les dejo el ejemplo que encontre en la red que me ayudó mucho en mi problema:


Ejemplo: Tenemos una tabla de datos de clientes, y necesitamos desplegar la informacion de uno o todos los clientes.


Declare @id_cliente char(13) -- Declaracion de la variable que nos servira de parametro
Set @id_cliente='Todos' -- Establecer el Valor
Select a.id_cliente,a.nombre
From tbl_clientes a
where a.id_cliente= case when @id_cliente='Todos' then
a.id_cliente else @id_cliente end

En esta parte es donde usamos el case dentro del where para hacer la comparacion de datos,
si deseamos todos los clientes, unicamente debemos compararlo con el codigo dentro de la
misma tabla, de lo contrario lo comparamos con el valor de la variable o parametro que utilizemos.

No hay comentarios: