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.
 

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.


Preguntas similares