Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problemas con Sentencia SQL (https://www.clubdelphi.com/foros/showthread.php?t=30971)

AGAG4 24-04-2006 21:13:17

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....

mayte mtz 24-04-2006 21:42:39

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...

AGAG4 24-04-2006 23:38:21

????
 
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.

mayte mtz 25-04-2006 16:46:32

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

AGAG4 26-04-2006 03:11:57

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.


La franja horaria es GMT +2. Ahora son las 04:03:28.

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