CASE

23/03/2005 - 11:46 por Racsus | Informe spam
Hola

Tengo en la siguiente sentencia sql lo siguiente:

ACTIV = CASE WHEN ALM_MOVIMIENTOS.ALMMOV_CODPARTE <> ''
THEN AVISOS_TODOS.AVI_ACTIVIDAD WHEN
ALM_MOVIMIENTOS.ALMMOV_ALMACEN_ACTIVIDAD <> '' THEN
ALM_MOVIMIENTOS.ALMMOV_ALMACEN_ACTIVIDAD ELSE
ALMSAL_ACTIVIDAD END

el problema es que cuando meto un WHERE ACTIV = ...

me dice que la columna ACTIV no existe. como puedo filtrar
con columnas CASE?

Saludos, Oscar

Preguntas similare

Leer las respuestas

#6 Alejandro Mesa
23/03/2005 - 14:09 | Informe spam
La otra forma seria usar el select como una tabla derivada.

Ejemplo:

select *
from
(
select actv1 = case end
from table1
) as t
where actv1 =


AMB


"Racsus" wrote:

Hola

no habria una forma de hacerlo sin tener que volver a
poner el case en la clausula where?

saludos, oscar

> Tienes que volver a repetir ese CASE en la cláusula
WHERE
>
>
> Un saludo
>
>-
>"Sólo sé que no sé nada. " (Sócrates)
>
>"Racsus" escribió
en el mensaje
>news:04a801c52f9c$ac1afa60$
>eL PROBLEMA es que quiero que los 3 resultado tengan el
>mismo nombre, intengo poner un AS ACTIV, pero no me deja.
>
>Como puedo hacer para que con un solo nombre pueda
>referencia a cualquier de los 3 resultados del case?
>
>Saludos, Oscar
>
>>La coluna ACTIV es un alias de una coluna de la tabla,
>deves utilizar la
>>coluna que está en el case y no su alias
>>
>>
>>Nuno Santos
>>nunos7[REMOVER]@hotmail.com
>>
>>"Racsus" wrote in
>message
>>news:0b3201c52f95$9c4dbca0$
>>> Hola
>>>
>>> Tengo en la siguiente sentencia sql lo siguiente:
>>>
>>> ACTIV = CASE WHEN ALM_MOVIMIENTOS.ALMMOV_CODPARTE <> ''
>>> THEN AVISOS_TODOS.AVI_ACTIVIDAD WHEN
>>> ALM_MOVIMIENTOS.ALMMOV_ALMACEN_ACTIVIDAD <> '' THEN
>>> ALM_MOVIMIENTOS.ALMMOV_ALMACEN_ACTIVIDAD ELSE
>>> ALMSAL_ACTIVIDAD END
>>>
>>> el problema es que cuando meto un WHERE ACTIV = ...
>>>
>>> me dice que la columna ACTIV no existe. como puedo
>filtrar
>>> con columnas CASE?
>>>
>>> Saludos, Oscar
>>
>>
>>.
>>
>
>
>.
>

Respuesta Responder a este mensaje
#7 Alejandro Mesa
23/03/2005 - 14:13 | Informe spam
La expresion CASE debe devolver un valor.

case
...
else
ALMSAL_ACTIVIDAD
end



AMB

"Racsus" wrote:

Hola

he puesto lo siguiente:

AND (ACTIVIDAD = CASE WHEN ALM_MOVIMIENTOS.ALMMOV_CODPARTE
<> '' THEN AVISOS_TODOS.AVI_ACTIVIDAD = '00' WHEN
ALM_MOVIMIENTOS.ALMMOV_ALMACEN_ACTIVIDAD <> '' THEN
ALM_MOVIMIENTOS.ALMMOV_ALMACEN_ACTIVIDAD = '00' ELSE
ALMSAL_ACTIVIDAD = '00' END)

y me da el siguiente error:

Server: Msg 170, Level 15, State 1, Line 3
Line 3: Incorrect syntax near '='.

En cualquier caso preferiria que pudiera asignar un nombre
a toda la clausula CASE y poder filtrar por ese nombre.
Saludos, Oscar
> Tienes que volver a repetir ese CASE en la cláusula
WHERE
>
>
> Un saludo
>
>-
>"Sólo sé que no sé nada. " (Sócrates)
>
>"Racsus" escribió
en el mensaje
>news:04a801c52f9c$ac1afa60$
>eL PROBLEMA es que quiero que los 3 resultado tengan el
>mismo nombre, intengo poner un AS ACTIV, pero no me deja.
>
>Como puedo hacer para que con un solo nombre pueda
>referencia a cualquier de los 3 resultados del case?
>
>Saludos, Oscar
>
>>La coluna ACTIV es un alias de una coluna de la tabla,
>deves utilizar la
>>coluna que está en el case y no su alias
>>
>>
>>Nuno Santos
>>nunos7[REMOVER]@hotmail.com
>>
>>"Racsus" wrote in
>message
>>news:0b3201c52f95$9c4dbca0$
>>> Hola
>>>
>>> Tengo en la siguiente sentencia sql lo siguiente:
>>>
>>> ACTIV = CASE WHEN ALM_MOVIMIENTOS.ALMMOV_CODPARTE <> ''
>>> THEN AVISOS_TODOS.AVI_ACTIVIDAD WHEN
>>> ALM_MOVIMIENTOS.ALMMOV_ALMACEN_ACTIVIDAD <> '' THEN
>>> ALM_MOVIMIENTOS.ALMMOV_ALMACEN_ACTIVIDAD ELSE
>>> ALMSAL_ACTIVIDAD END
>>>
>>> el problema es que cuando meto un WHERE ACTIV = ...
>>>
>>> me dice que la columna ACTIV no existe. como puedo
>filtrar
>>> con columnas CASE?
>>>
>>> Saludos, Oscar
>>
>>
>>.
>>
>
>
>.
>

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida