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