Usar estructuras condicionales en un SELECT

29/09/2004 - 11:35 por Raúl | Informe spam
Hola a todos y gracias de antemano.

Tengo un problemilla con una sentencia SQL y pido ayuda.

Normalmente trabajo con una base de datos Access que tiene vinculadas las
tablas del SQL Server. Ahí pruebo las consultas para luego escribirlas sobre
ASP y lanzarlas con Explorer.
Ahora bien, tengo esta consulta que me funciona sobre Access, pero no sobre
SQL Server. ¿Alguien me podría decir que pasa? Gracias.

Consulta:

SELECT Producto, Sum(IIF(Any 04;Kg;0)) As TotalKg
FROM
GROUP BY Producto

Me da el siguiente error

[Microsoft][ODBC SQL Server Driver][SQL Server]Línea 1: sintaxis incorrecta
cerca de '='.

PD. No puedo utilizar un Where Any = 2004 porque en la misma consulta miro
diferentes años. Esta es la mínima expresión que he dejado de la sentencia y
aún así me da error.

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
29/09/2004 - 12:05 | Informe spam
No sé si Any es una función de Access, pero en SQL Server la instrucción
IIF se simula con un CASE. Por ejemplo:

SELECT Producto, Sum(CASE WHEN Any 04 THEN Kg ELSE 0 END) As TotalKg
FROM
GROUP BY Producto


Un saludo

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

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Raúl" escribió en el mensaje
news:#M1#
Hola a todos y gracias de antemano.

Tengo un problemilla con una sentencia SQL y pido ayuda.

Normalmente trabajo con una base de datos Access que tiene vinculadas las
tablas del SQL Server. Ahí pruebo las consultas para luego escribirlas


sobre
ASP y lanzarlas con Explorer.
Ahora bien, tengo esta consulta que me funciona sobre Access, pero no


sobre
SQL Server. ¿Alguien me podría decir que pasa? Gracias.

Consulta:

SELECT Producto, Sum(IIF(Any 04;Kg;0)) As TotalKg
FROM
GROUP BY Producto

Me da el siguiente error

[Microsoft][ODBC SQL Server Driver][SQL Server]Línea 1: sintaxis


incorrecta
cerca de '='.

PD. No puedo utilizar un Where Any = 2004 porque en la misma consulta miro
diferentes años. Esta es la mínima expresión que he dejado de la sentencia


y
aún así me da error.


Respuesta Responder a este mensaje
#2 Sole
29/09/2004 - 12:48 | Informe spam
te veo puntos y coma en el iif, sustituyelos por comas

"Raúl" escribió en el mensaje
news:%23M1%
Hola a todos y gracias de antemano.

Tengo un problemilla con una sentencia SQL y pido ayuda.

Normalmente trabajo con una base de datos Access que tiene vinculadas las
tablas del SQL Server. Ahí pruebo las consultas para luego escribirlas


sobre
ASP y lanzarlas con Explorer.
Ahora bien, tengo esta consulta que me funciona sobre Access, pero no


sobre
SQL Server. ¿Alguien me podría decir que pasa? Gracias.

Consulta:

SELECT Producto, Sum(IIF(Any 04;Kg;0)) As TotalKg
FROM
GROUP BY Producto

Me da el siguiente error

[Microsoft][ODBC SQL Server Driver][SQL Server]Línea 1: sintaxis


incorrecta
cerca de '='.

PD. No puedo utilizar un Where Any = 2004 porque en la misma consulta miro
diferentes años. Esta es la mínima expresión que he dejado de la sentencia


y
aún así me da error.


Respuesta Responder a este mensaje
#3 Raúl
01/10/2004 - 12:41 | Informe spam
Gracias por las respuestas. El CASE funciona de maravilla :-D
Respuesta Responder a este mensaje
#4 Sole
01/10/2004 - 16:58 | Informe spam
Pensaba q intentabas hacerla desde Access, ya q la sintaxis q habías
mostrado no podía funcionar con los puntos y coma ; . De probarla desde el
access tendría q especificar en tipo de consulta Paso a través (Passthrough)
y podrías probar el ejemplo q te ha dado Carlos, lo q tú intentabas sólo lo
podías con el iif se puede conseguir teniendo en el access tablas vinculadas
al sqlserver y acceder mediante el jet.

De todos modos esto ya no vale de nada ;D

"Raúl" escribió en el mensaje
news:


Gracias por las respuestas. El CASE funciona de maravilla :-D


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