Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-10-2012
Avatar de jooooseph
jooooseph jooooseph is offline
Miembro
 
Registrado: oct 2007
Posts: 50
Poder: 17
jooooseph Va por buen camino
Problemas con el IF

tengo este problema, no se donde ocurre, pero me arroja que es del IF
Código SQL [-]
select   CLIENTES.NOMBRE_COMPLETO, 
sum(if(extract(year from fecha_ingreso) = 2012 and extract(month from fecha_ingreso) = 1, monto_soles, 0)) as enero
from CLIENTES
left join INGRESOS on MIEMBROS.CODIGO_MIEMBRO = diezmos.CODIGO_MIEMBRO
group by nombre_completo

EL ERROR ES EL SIGUIENTE

Código SQL [-]
Can't format message 13:896 -- message file C:\Program Files (x86)\EMS\SQL Studio for InterBase & Firebird\firebird.msg not found.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 2, column 5.
If.

Espero puedan ayudarme...
Responder Con Cita
  #2  
Antiguo 19-10-2012
Avatar de Ferrari
Ferrari Ferrari is offline
Miembro
 
Registrado: jun 2006
Ubicación: Torreón, México
Posts: 153
Poder: 18
Ferrari Va por buen camino
Unhappy Duda

Donde haces referencia a la tabla 'fecha_ingreso' ???...
Responder Con Cita
  #3  
Antiguo 19-10-2012
Avatar de jooooseph
jooooseph jooooseph is offline
Miembro
 
Registrado: oct 2007
Posts: 50
Poder: 17
jooooseph Va por buen camino
el mismo problema

Cita:
Empezado por Ferrari Ver Mensaje
Donde haces referencia a la tabla 'fecha_ingreso' ???...
Código SQL [-]
select   
CLIENTES.NOMBRE_COMPLETO,  
sum(if(extract(year from ingresos.fecha_ingreso) = 2012 and extract(month from ingresos.fecha_ingreso) = 1, monto_soles, 0)) as enero 
from CLIENTES 
left join INGRESOS on MIEMBROS.CODIGO_MIEMBRO = INGRESOS.CODIGO_MIEMBRO 
group by nombre_completo

Este seria el codigo, pero el error es el mismo.
Responder Con Cita
  #4  
Antiguo 19-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿MySql?..........
Responder Con Cita
  #5  
Antiguo 19-10-2012
Avatar de jooooseph
jooooseph jooooseph is offline
Miembro
 
Registrado: oct 2007
Posts: 50
Poder: 17
jooooseph Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿MySql?..........


es firebird.

Este tipo de codigo me funcionó en otro proyecto, pero no se que pasa ahora, lo peor es que ya no tengo el codigo anterior porq se me malogro el disco duro. espero puedas ayudarme
Responder Con Cita
  #6  
Antiguo 19-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Me parece recordar que con el if no puedes dar un valor u otro, eso es con el coalesce.
Responder Con Cita
  #7  
Antiguo 19-10-2012
Avatar de jooooseph
jooooseph jooooseph is offline
Miembro
 
Registrado: oct 2007
Posts: 50
Poder: 17
jooooseph Va por buen camino
Como lo mencioné anteriormente.. Esta función me funcionó en otro proyecto, pero ahora no se que pasa. de todas maneras gracias por la ayuda.
Responder Con Cita
  #8  
Antiguo 19-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No te ha podido funcionar, con esa sintaxis no puede ser.
Habrás hecho algo así como: if (comparativa año y mes) then variable=campoquequieras else '0'
Responder Con Cita
  #9  
Antiguo 19-10-2012
Avatar de jooooseph
jooooseph jooooseph is offline
Miembro
 
Registrado: oct 2007
Posts: 50
Poder: 17
jooooseph Va por buen camino
Código SQL [-]
select
  clientes.nombre,
  sum(if(extract(year from fecha) = 2012 and extract(month from fecha) = 1, monto, 0)) as enero,
  sum(if(extract(year from fecha) = 2012 and extract(month from fecha) = 2, monto, 0)) as febrero,
  ...
  sum(if(extract(year from fecha) = 2012 and extract(month from fecha) = 12, monto, 0)) as diciembre
from clientes
left join ingresos on clientes.nombre = ingresos.nombre
group by nombre

Ese era el codigo iniacial que use en otro poryecto de prueba y funcionaba perfectamente para mi reporte anual con firebird. con una BD de prueba.
Ahora he querido volverlo a usar pero me sale error en el IF.
Responder Con Cita
  #10  
Antiguo 19-10-2012
hoyosfelix hoyosfelix is offline
Miembro
 
Registrado: ago 2010
Ubicación: San Antonio, Paraguay
Posts: 38
Poder: 0
hoyosfelix Va por buen camino
Buena tarde a todos,

En la consulta se utiliza iif, y en los procedimientos se utiliza el if con una sola i.
El motor siempre indica el error de sintaxis, como se te indica en tu código de error: Token unknown - line 2, column 5.
de allí te da una pista de dónde está el error.
Probá cambiando el if por el iif en tu consulta y luego avisá el resultado.

Código SQL [-]
select   clientes.nombre,   sum(iif(extract(year from fecha) = 2012 and extract(month from fecha) = 1, monto, 0)) as enero,
sum(iif(extract(year from fecha) = 2012 and extract(month from fecha) = 2, monto, 0)) as febrero,
Una sugerencia a los compañeros foristas, una vez que se resuelvan las preguntas si se puede poner en el título la palabra RESUELTO o algo similar para cerrar las preguntas.

Saludos...

Última edición por Casimiro Notevi fecha: 19-10-2012 a las 21:31:12.
Responder Con Cita
  #11  
Antiguo 19-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por hoyosfelix Ver Mensaje
Una sugerencia a los compañeros foristas, una vez que se resuelvan las preguntas si se puede poner en el título la palabra RESUELTO o algo similar para cerrar las preguntas.
Es un tema que lo hemos comentado algunas veces, no lo hacemos por varios motivos, uno de ellos es que aunque esté resuelto, siempre puede existir alguna nueva respuesta usando otra forma o método de resolverlo, por lo que se "enriquece" el contenido con varias posibilidades distintas.

Por lo que nunca cerramos los hilos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:06:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi