Pregunta fácil acerca de CASE

29/03/2006 - 08:51 por Oscar | Informe spam
Estoy liado con una consulta de SQL en la que quiero añadir un campo que me
ponga un valor dependiendo de otro campo. Ejemplo:

CASE sum(importe)
when > 400000 then '1S'
END AS CAT

Quiero que la Suma del campo 'Importe' cuando sea mayor de 400000 me ponga
en el campo CAT el valor 1S pero me falla al ejecutar la consulta, parece
que da problemas el signo de mayor porque si lo quito no me da ningun
problema pero necesito poner esa condicción. Necesito vuestra ayuda por
favor. Muchas Gracias.


El error que me da es el siguiente:

Servidor: mensaje 170, nivel 15, estado 1, línea 4
Line 4: Incorrect syntax near '>'.



Oscar.

Preguntas similare

Leer las respuestas

#1 Antonio Soto
29/03/2006 - 13:32 | Informe spam
Hola Oscar

Prueba con:

CASE
When sum(importe) > 400000 then '1S'
END AS CAT

Saludos


Antonio Soto
Solid Quality Learning
http://www.sqlu.com
Disclaimer: This communication is an original work and represents my sole
views on the subject. It does not represent the views of any other person
or entity either by inference or direct reference.
"Oscar" escribió en el mensaje
news:%23%
Estoy liado con una consulta de SQL en la que quiero añadir un campo que
me ponga un valor dependiendo de otro campo. Ejemplo:

CASE sum(importe)
when > 400000 then '1S'
END AS CAT

Quiero que la Suma del campo 'Importe' cuando sea mayor de 400000 me ponga
en el campo CAT el valor 1S pero me falla al ejecutar la consulta, parece
que da problemas el signo de mayor porque si lo quito no me da ningun
problema pero necesito poner esa condicción. Necesito vuestra ayuda por
favor. Muchas Gracias.


El error que me da es el siguiente:

Servidor: mensaje 170, nivel 15, estado 1, línea 4
Line 4: Incorrect syntax near '>'.



Oscar.

Respuesta Responder a este mensaje
#2 Oscar
29/03/2006 - 14:19 | Informe spam
Ya lo he probado y nada, me da error igual. Más propuestas??? Gracias por
contestar.


"Antonio Soto" escribió en el mensaje
news:ODnP%
Hola Oscar

Prueba con:

CASE
When sum(importe) > 400000 then '1S'
END AS CAT

Saludos


Antonio Soto
Solid Quality Learning
http://www.sqlu.com
Disclaimer: This communication is an original work and represents my sole
views on the subject. It does not represent the views of any other person
or entity either by inference or direct reference.
"Oscar" escribió en el mensaje
news:%23%
Estoy liado con una consulta de SQL en la que quiero añadir un campo que
me ponga un valor dependiendo de otro campo. Ejemplo:

CASE sum(importe)
when > 400000 then '1S'
END AS CAT

Quiero que la Suma del campo 'Importe' cuando sea mayor de 400000 me
ponga en el campo CAT el valor 1S pero me falla al ejecutar la consulta,
parece que da problemas el signo de mayor porque si lo quito no me da
ningun problema pero necesito poner esa condicción. Necesito vuestra
ayuda por favor. Muchas Gracias.


El error que me da es el siguiente:

Servidor: mensaje 170, nivel 15, estado 1, línea 4
Line 4: Incorrect syntax near '>'.



Oscar.





Respuesta Responder a este mensaje
#3 Carlos Sacristán
29/03/2006 - 15:03 | Informe spam
Postea la sentencia que estás intentando ejecutar y el error que te
lanza y así te podremos ayudar mejor. De otro modo es mucho más difícil
saber qué te está ocurriendo y cómo podemos solucionar el problema.


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Oscar" escribió en el mensaje
news:
Ya lo he probado y nada, me da error igual. Más propuestas??? Gracias


por
contestar.


"Antonio Soto" escribió en el mensaje
news:ODnP%
> Hola Oscar
>
> Prueba con:
>
> CASE
> When sum(importe) > 400000 then '1S'
> END AS CAT
>
> Saludos
>
>
> Antonio Soto
> Solid Quality Learning
> http://www.sqlu.com
> Disclaimer: This communication is an original work and represents my


sole
> views on the subject. It does not represent the views of any other


person
> or entity either by inference or direct reference.
> "Oscar" escribió en el mensaje
> news:%23%
>> Estoy liado con una consulta de SQL en la que quiero añadir un campo


que
>> me ponga un valor dependiendo de otro campo. Ejemplo:
>>
>> CASE sum(importe)
>> when > 400000 then '1S'
>> END AS CAT
>>
>> Quiero que la Suma del campo 'Importe' cuando sea mayor de 400000 me
>> ponga en el campo CAT el valor 1S pero me falla al ejecutar la


consulta,
>> parece que da problemas el signo de mayor porque si lo quito no me da
>> ningun problema pero necesito poner esa condicción. Necesito vuestra
>> ayuda por favor. Muchas Gracias.
>>
>>
>> El error que me da es el siguiente:
>>
>> Servidor: mensaje 170, nivel 15, estado 1, línea 4
>> Line 4: Incorrect syntax near '>'.
>>
>>
>>
>> Oscar.
>>
>
>


Respuesta Responder a este mensaje
#4 Oscar
29/03/2006 - 16:09 | Informe spam
OK,

ESTA SENTENCIA FUNCIONA:

SELECT Cliente, LinNeg, Año, SUM(Importe) AS TotImporte, División, TC,
Rep,
CASE SUM(IMPORTE)
WHEN 400000 THEN '1S'
END
AS CAT
FROM dbo.OS_VENTAS_TOTALES
GROUP BY Cliente, LinNeg, Año, División, TC, Rep
HAVING (Año > YEAR(GETDATE()) - 4)


Y LA SIGUIENTE ES LA QUE DESEARÍA UTILIZAR Y NO FUNCIONA:

SELECT Cliente, LinNeg, Año, SUM(Importe) AS TotImporte, División, TC,
Rep,
CASE SUM(IMPORTE)
WHEN > 400000 THEN '1S'
END
AS CAT
FROM dbo.OS_VENTAS_TOTALES
GROUP BY Cliente, LinNeg, Año, División, TC, Rep
HAVING (Año > YEAR(GETDATE()) - 4)

Si Observáis la única diferencia entre la primera (que funciona) y la
segunda (que no) es que en la segunda he añadido el signo de mayor '>'
porque quiero que me ponga '1S' en CAT cuando sea mayor a 400000 no cuando
sea igual. También lo he probado poniendo el Sum(importe) delante del > y
tampoco funciona. El error que me da es el siguiente:

Servidor: mensaje 170, nivel 15, estado 1, línea 3
Line 3: Incorrect syntax near '>'.


El problema seguro que lo podéis reproducir poniendo una sentencia parecida
en cualquier tabla que tengáis con datos numéricos, es como si el CASE solo
aceptara valores exactos, sin condicciones.



"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:%
Postea la sentencia que estás intentando ejecutar y el error que te
lanza y así te podremos ayudar mejor. De otro modo es mucho más difícil
saber qué te está ocurriendo y cómo podemos solucionar el problema.


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Oscar" escribió en el mensaje
news:
Ya lo he probado y nada, me da error igual. Más propuestas??? Gracias


por
contestar.


"Antonio Soto" escribió en el mensaje
news:ODnP%
> Hola Oscar
>
> Prueba con:
>
> CASE
> When sum(importe) > 400000 then '1S'
> END AS CAT
>
> Saludos
>
>
> Antonio Soto
> Solid Quality Learning
> http://www.sqlu.com
> Disclaimer: This communication is an original work and represents my


sole
> views on the subject. It does not represent the views of any other


person
> or entity either by inference or direct reference.
> "Oscar" escribió en el mensaje
> news:%23%
>> Estoy liado con una consulta de SQL en la que quiero añadir un campo


que
>> me ponga un valor dependiendo de otro campo. Ejemplo:
>>
>> CASE sum(importe)
>> when > 400000 then '1S'
>> END AS CAT
>>
>> Quiero que la Suma del campo 'Importe' cuando sea mayor de 400000 me
>> ponga en el campo CAT el valor 1S pero me falla al ejecutar la


consulta,
>> parece que da problemas el signo de mayor porque si lo quito no me da
>> ningun problema pero necesito poner esa condicción. Necesito vuestra
>> ayuda por favor. Muchas Gracias.
>>
>>
>> El error que me da es el siguiente:
>>
>> Servidor: mensaje 170, nivel 15, estado 1, línea 4
>> Line 4: Incorrect syntax near '>'.
>>
>>
>>
>> Oscar.
>>
>
>






Respuesta Responder a este mensaje
#5 Maxi
29/03/2006 - 16:32 | Informe spam
Estimado, el error ahi lo tenes en 2 lados

1) es CASE WHEN SUM(importe) > zzz
2) en el group by vas a tener tambien que poner el CASE

con lo cual:

SELECT Cliente, LinNeg, Año, SUM(Importe) AS TotImporte, División, TC,
Rep,
CASE when SUM(IMPORTE)
400000 THEN '1S'


END
AS CAT
FROM dbo.OS_VENTAS_TOTALES
GROUP BY Cliente, LinNeg, Año, División, TC, Rep,
CASE when SUM(IMPORTE)
400000 THEN '1S'


END

HAVING (Año > YEAR(GETDATE()) - 4)





Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Oscar" escribió en el mensaje
news:
OK,

ESTA SENTENCIA FUNCIONA:

SELECT Cliente, LinNeg, Año, SUM(Importe) AS TotImporte, División, TC,
Rep,
CASE SUM(IMPORTE)
WHEN 400000 THEN '1S'
END
AS CAT
FROM dbo.OS_VENTAS_TOTALES
GROUP BY Cliente, LinNeg, Año, División, TC, Rep
HAVING (Año > YEAR(GETDATE()) - 4)


Y LA SIGUIENTE ES LA QUE DESEARÍA UTILIZAR Y NO FUNCIONA:

SELECT Cliente, LinNeg, Año, SUM(Importe) AS TotImporte, División, TC,
Rep,
CASE SUM(IMPORTE)
WHEN > 400000 THEN '1S'
END
AS CAT
FROM dbo.OS_VENTAS_TOTALES
GROUP BY Cliente, LinNeg, Año, División, TC, Rep
HAVING (Año > YEAR(GETDATE()) - 4)

Si Observáis la única diferencia entre la primera (que funciona) y la
segunda (que no) es que en la segunda he añadido el signo de mayor '>'
porque quiero que me ponga '1S' en CAT cuando sea mayor a 400000 no cuando
sea igual. También lo he probado poniendo el Sum(importe) delante del > y
tampoco funciona. El error que me da es el siguiente:

Servidor: mensaje 170, nivel 15, estado 1, línea 3
Line 3: Incorrect syntax near '>'.


El problema seguro que lo podéis reproducir poniendo una sentencia
parecida en cualquier tabla que tengáis con datos numéricos, es como si el
CASE solo aceptara valores exactos, sin condicciones.



"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:%
Postea la sentencia que estás intentando ejecutar y el error que te
lanza y así te podremos ayudar mejor. De otro modo es mucho más difícil
saber qué te está ocurriendo y cómo podemos solucionar el problema.


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Oscar" escribió en el mensaje
news:
Ya lo he probado y nada, me da error igual. Más propuestas??? Gracias


por
contestar.


"Antonio Soto" escribió en el mensaje
news:ODnP%
> Hola Oscar
>
> Prueba con:
>
> CASE
> When sum(importe) > 400000 then '1S'
> END AS CAT
>
> Saludos
>
>
> Antonio Soto
> Solid Quality Learning
> http://www.sqlu.com
> Disclaimer: This communication is an original work and represents my


sole
> views on the subject. It does not represent the views of any other


person
> or entity either by inference or direct reference.
> "Oscar" escribió en el mensaje
> news:%23%
>> Estoy liado con una consulta de SQL en la que quiero añadir un campo


que
>> me ponga un valor dependiendo de otro campo. Ejemplo:
>>
>> CASE sum(importe)
>> when > 400000 then '1S'
>> END AS CAT
>>
>> Quiero que la Suma del campo 'Importe' cuando sea mayor de 400000 me
>> ponga en el campo CAT el valor 1S pero me falla al ejecutar la


consulta,
>> parece que da problemas el signo de mayor porque si lo quito no me da
>> ningun problema pero necesito poner esa condicción. Necesito vuestra
>> ayuda por favor. Muchas Gracias.
>>
>>
>> El error que me da es el siguiente:
>>
>> Servidor: mensaje 170, nivel 15, estado 1, línea 4
>> Line 4: Incorrect syntax near '>'.
>>
>>
>>
>> Oscar.
>>
>
>










Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida