SQL Server - CASE combinado en un SELECT

   
Vista:

CASE combinado en un SELECT

Publicado por Andres (1 intervención) el 12/03/2009 13:38:01
Buenas gente, tengo el siguiente problema que por lo que lei puedo solucionarlo con el CASE dentro de un SELECT. WEs la primera vez que lo intento, tal vez puedan decirme que etoy haciendo mal o que es lo que no puedo hacer. Gracias de antemano

Problema
--------------
Necesito usar el CASE combinando 2 campos #Tmp.cuota y #Tmp.envio pero me da el siguiente error:

Mens 102, Nivel 15, Estado 1, Procedimiento TEST, Línea 102
Sintaxis incorrecta cerca de '='.

...

create table Destino(d_item smallint, d_numero int, d_cantidad int, d_cantnew int)

create table #Tmp(item smallint, numero int, cantidad int, cuota int, envio bit )

...

INSERT INTO Destino(d_item, d_numero, d_cantidad, d_cantnew)
(SELECT #Tmp.item,#Tmp.numero,#Tmp.cantidad,
CASE
WHEN (#Tmp.cuota=0 AND #Tmp.envio=0)
THEN #Tmp.cantidad
WHEN (#Tmp.cuota>0 AND #Tmp.envio=1)
THEN #Tmp.cantidad
WHEN (#Tmp.cuota>0 AND #Tmp.envio=0)
THEN 0
ELSE #Tmp.cantidad
END
FROM #Tmp)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de roger

RE:CASE combinado en un SELECT

Publicado por roger (173 intervenciones) el 12/03/2009 13:55:43
seguro que el error te aparece en las lineas del case?????
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:CASE combinado en un SELECT

Publicado por Mau (67 intervenciones) el 12/03/2009 19:21:25
Hola Andrés, la idea es por ahí pero tienes errores de sintaxis. Más bien sería algo así:

INSERT INTO Destino(d_item, d_numero, d_cantidad, d_cantnew)
SELECT #Tmp.item,#Tmp.numero,#Tmp.cantidad,
CASE
WHEN #Tmp.cuota=0 AND #Tmp.envio=0
THEN #Tmp.cantidad
WHEN #Tmp.cuota>0 AND #Tmp.envio=1
THEN #Tmp.cantidad
WHEN #Tmp.cuota>0 AND #Tmp.envio=0
THEN 0
ELSE #Tmp.cantidad
END
FROM #Tmp

Todos esos paréntesis no son necesarios. Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar