viernes, 31 de agosto de 2012

USANDO CASE - WHEN EN CLAUSULA 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 clientes en una misma consulta. Encontré una forma fácil de realizarlo. Espero les sirva. 

Ejemplo: Tenemos una tabla de datos de clientes, y necesitamos desplegar la información de uno o todos los clientes. Este es el código de ejemplo:

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.



DECLARE @VAR1 nvarchar(50)
DECLARE @VAR2 nvarchar(50)
SELECT * FROM ORDERS
WHERE @VAR2 = ( CASE @VAR1
                WHEN 'Customers' THEN CustomerID 
                WHEN 'Employee'  THEN EmployeeID 
                ELSE -1
                END )




Data Modeling Introduction

Pueden revisar otros ejemplos en esta pagina.
http://www.craigsmullins.com/ssu_0899.htm


Hasta la próxima amigos

No hay comentarios: