Error en CASE dentro de WHERE

20/04/2007 - 21:47 por Cristian Meneses | Informe spam
Hola!
Tengo un error en la siguiente instruccion

SELECT
CLI_ID,
CLI_RAZONSOCIAL,
LOC_ID,
PAI_ID,
ELIMINADO
FROM CLIENTES
WHERE
(CASE WHEN (@AUX = 20) THEN (PAI_ID = 1 AND) END)
(CASE WHEN (@AUX2 = 30) THEN (LOC_ID = 1 AND) END)
ELIMINADO = 0

donde @Aux y @Aux2 son parametros del procedimiento almacenado...
Aparece un error cerca del '='
Que puede estar pasando?
Gracias

Cristian
 

Leer las respuestas

#1 DNC
20/04/2007 - 22:14 | Informe spam
prueba


create table ##clientes
( cli_id int identity,
cli_razonsocial varchar (50),
loc_id int,
pai_id int ,
eliminado bit default 0
)
go

insert into ##clientes values('test',1,1,default)
insert into ##clientes values('test',1,2,default)
insert into ##clientes values('test',1,3,default)
insert into ##clientes values('test',2,2,default)
insert into ##clientes values('test',2,4,default)
insert into ##clientes values('test',3,1,default)
insert into ##clientes values('test',5,3,default)
go

declare @aux int
declare @aux2 int

set @aux = 20
set @aux2 = 30

select
cli_id,
cli_razonsocial,
loc_id,
pai_id,
eliminado
from ##clientes
where pai_id = case when @aux = 20 then 1 else pai_id end
and loc_id = case when @aux2 = 30 then 1 else loc_id end
and eliminado = 0
go


On 20 abr, 16:47, Cristian Meneses wrote:
Hola!
Tengo un error en la siguiente instruccion

SELECT
CLI_ID,
CLI_RAZONSOCIAL,
LOC_ID,
PAI_ID,
ELIMINADO
FROM CLIENTES
WHERE
(CASE WHEN (@AUX = 20) THEN (PAI_ID = 1 AND) END)
(CASE WHEN (@AUX2 = 30) THEN (LOC_ID = 1 AND) END)
ELIMINADO = 0

donde @Aux y @Aux2 son parametros del procedimiento almacenado...
Aparece un error cerca del '='
Que puede estar pasando?
Gracias

Cristian

Preguntas similares