Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-04-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Problemas con Sentencia SQL

Uso Firebird 1.53
Tengo problemas con la siguiente instrucción SQL que me tiene muy preocupado:
Código SQL [-]
SELECT F.VENDEDOR,V.NOMVEN,COALESCE(SUM(F.IMPORFAC),0)-
   ((SELECT COALESCE(SUM(I.IMPMOV-I.IVAFAC),0) FROM TCXC_CLIMOVIM I
     WHERE (I.TIPOMOV='NX') AND
     I.FACTURA = F.TIPOMOV||F.FOLIOFISCAL AND
     I.FECHAMOV BETWEEN '01.02.2006' AND '28.02.2006' AND
     I.VENDEDOR = F.VENDEDOR)) TOTAL
FROM TFAC_FACTURAS F
JOIN TFAC_VENDEDORES V ON (V.CLAVEN = F.VENDEDOR)
WHERE F.TIPOMOV='XX' AND
F.FECHAFAC BETWEEN '01.02.2006' AND '28.02.2006' AND
F.DESGLODOC = 1 AND (F.TASAIVA = 1 OR F.TASAIVA = 3)
GROUP BY F.VENDEDOR,V.NOMVEN
ORDER BY 3 DESC
El problema es con la instrucción que esta en NEGRITA, estoy comparando el campo F.TIPOMOVy F.FOLIOFISCAL que no estoy señalando en el Select Maestro es decir arriba F.VENDEDOR,V.NOMVEN,COALESCE(SUM(F.IMPORFAC),0)- por lo que me marca el error:

Invalid expression in the Select list (not contained in either an aggregate function or the GROUP BY clause).

Hay alguna forma de tomar campos que no se señalan en un Select Maestro ?????

Lo que no quiero es Señalar ese campo en el Select Maestro porque lo que ocupo son concentrados( Sumas ) entre campos.

Espero me haya entendido si no, me dicen por favor....
Responder Con Cita
  #2  
Antiguo 24-04-2006
mayte mtz mayte mtz is offline
Miembro
 
Registrado: sep 2005
Posts: 31
Poder: 0
mayte mtz Va por buen camino
Incluye la funcion Max(campo que no estas incluyendo en el Select maestro) y ya no te marcara el error.

Lo que se hace aquí es decir que te dé el valor máximo que se encuentre en los posibles valores que tenga el campo.

Espero te ayude...
Responder Con Cita
  #3  
Antiguo 24-04-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
????

Hay un gran problema, con este campo F.FOLIOFISCAL por Cada Registro que se encuentre en el maestro tiene que estar en el SubSelect, este campo es de tipo entero, aparte ya hice la prueba y marca el mismo error, quedo así:
Código SQL [-]
SELECT F.VENDEDOR,V.NOMVEN,MAX(F.FOLIOFISCAL),COALESCE(SUM(F.IMPORFAC),0)-
((SELECT COALESCE(SUM(I.IMPMOV-I.IVAFAC),0) FROM TCXC_CLIMOVIM I
     WHERE (I.TIPOMOV='NX') AND
I.FACTURA = 'FP'||F.FOLIOFISCAL AND
     I.FECHAMOV BETWEEN '01.02.2006' AND '28.02.2006' AND     I.VENDEDOR = F.VENDEDOR)) TOTALFROM TFAC_FACTURAS F
JOIN TFAC_VENDEDORES V ON (V.CLAVEN = F.VENDEDOR)
WHERE F.TIPOMOV='XX' AND
F.FECHAFAC BETWEEN '01.02.2006' AND '28.02.2006' AND
F.DESGLODOC = 1 AND (F.TASAIVA = 1 OR F.TASAIVA = 3)
GROUP BY F.VENDEDOR,V.NOMVEN
ORDER BY 3 DESC

Gracias por su respuesta.
Responder Con Cita
  #4  
Antiguo 25-04-2006
mayte mtz mayte mtz is offline
Miembro
 
Registrado: sep 2005
Posts: 31
Poder: 0
mayte mtz Va por buen camino
Me referia a colocar el Max en la subconsulta
algo asÍ:
Código SQL [-]
SELECT F.VENDEDOR,  V.NOMVEN,COALESCE(SUM(F.IMPORFAC),0)-     ((  SELECT COALESCE(SUM(I.IMPMOV-I.IVAFAC),0) FROM TCXC_CLIMOVIM I         WHERE (I.TIPOMOV='NX') AND         I.FACTURA = MAX(F.TIPOMOV)||MAX(F.FOLIOFISCAL) AND         I.FECHAMOV BETWEEN '01.02.2006' AND '28.02.2006' AND         I.VENDEDOR = F.VENDEDOR)) TOTALFROM TFAC_FACTURAS FJOIN TFAC_VENDEDORES V ON (V.CLAVEN = F.VENDEDOR)WHERE   F.TIPOMOV='XX' AND  F.FECHAFAC BETWEEN '01.02.2006' AND '28.02.2006' AND  F.DESGLODOC = 1 AND (F.TASAIVA = 1 OR F.TASAIVA = 3)GROUP BY F.VENDEDOR,V.NOMVENORDER BY 3 DESC

Ojalá te ayude
Responder Con Cita
  #5  
Antiguo 26-04-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Resuelto!!!!

No me quedo otra de agregar un Join, tarda un poco más pero hace lo que quiero:
Código SQL [-]
SELECT COALESCE(SUM(C.IMPMOV),0)-COALESCE(SUM(C.IVAFAC),0) FROM TCXC_CLIMOVIM C
INNER JOIN TFAC_FACTURAS F1 ON (SUBSTRING(C.FACTURA FROM 1 FOR 2) = F1.TIPOMOV AND CAST(SUBSTRING(C.FACTURA FROM 3 FOR 6) AS INTEGER) = F1.FOLIOFISCAL)
WHERE (C.TIPOMOV='NP' OR C.TIPOMOV='NX') AND
F1.CREDCON = 2 AND
C.VENDEDOR = F.VENDEDOR AND
C.FECHAMOV BETWEEN '01.02.2006' AND '28.02.2006'

Gracias por su Respuestas.

Última edición por AGAG4 fecha: 26-04-2006 a las 03:14:06.
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Entender una sentencia Renees Varios 5 02-09-2005 19:35:01
sentencia que no termina de ir ... chelejuan SQL 2 25-01-2005 19:50:44
Sentencia SUM geovany SQL 2 29-10-2004 23:52:24
Problemas con la sentencia LIKE feruiz Firebird e Interbase 5 13-07-2004 20:37:35
sentencia sql??? empty SQL 3 07-04-2004 11:01:32


La franja horaria es GMT +2. Ahora son las 19:59:31.


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