Foros Club Delphi

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

Coco_jac 28-11-2005 18:57:29

Error con sentencia SQL
 
Hola amigos del foro, tengo una duda. Estoy trabajando con tablas paradox,
empleo un Tquery para realizar filtros, el resultado lo asigno a un data source y finalmente lo visualizo en una grilla.Tengo problemas en una de ellas, resulta que deseo obtener la cantidad de veces que se repite el campo (RUC) del cliente

este es mi codigo:

Código:


query1.SQL.Text:='select cclie,nombre,RUC,count(*) from CLIE01 group by RUC having count(*)>1';
 
query1.open;

Obtendre el codigo del cliente ,nombre del cliente, RUC y el numero de veces que se repite su RUC. Pero sale un error : "When Group by exists,every simple field in projectors must be in group by".
Por favor necesito saber cual es el error.....

Gracias anticipadas.

delphi.com.ar 28-11-2005 19:01:56

No puedes consultar los campos cclie, nombre si estos no has agrupado por estos:
Código SQL [-]
SELECT CCLIE, NOMBRE, RUC, COUNT(*) 
FROM CLIE01 
GROUP BY CCLIE, NOMBRE, RUC 
HAVING COUNT(*)>1
O si no han sido afectados por ninguna función de grupo:
Código SQL [-]
SELECT MAX(CCLIE), MIN(NOMBRE), RUC, COUNT(*) 
FROM CLIE01 
GROUP BY RUC 
HAVING COUNT(*)>1
Saludos!

marcoszorrilla 28-11-2005 19:02:50

Siempre que utilices Group By, todos los campos utilizados en el Select, tienen que participar de la claúsula Group by y al menos realizar alguna operación de agrupamiento.
Código SQL [-]
  Select Nombre, Codigo, Max(fecha), Sum(saldo)
  from Facturas
  Group by nombre, codigo

Como puedes ver todos los campos o están en la claúsula Group by o afectados por una función de agrupamiento.

Un Saludo.

marcoszorrilla 28-11-2005 19:03:57

Se me adelantó Federico.

Brrrrrrrrrrr.

Un Saludo.

Coco_jac 28-11-2005 19:56:27

Gracias por atender mi duda, hize lo que me sugerieron, pero a pesar de existir RUC repetidos , no muestra resultados alguno.

Código:


query1.SQL.Text:='select cclie,nombre,rfc,count(*) from CLIE01 Group by rfc,cclie,nombre having count(*)>1';
query1.Open;

La sentencia sql se ve afectada, es es correcta ?

Gracias

delphi.com.ar 28-11-2005 20:10:20

Aqui estas consultando los rfc+cclie+nombre repetidos... ¿Existen?

Coco_jac 28-11-2005 20:20:05

Lo que necesito es obtener el nombre del cliente, codigo, ruc, y la cantidad de veces mayores que uno que apaarce su ruc

001 carlos 121222 2 algo asi.

Mi pregunta va que con la sentencia original obtengo resultados en Visual Fox pero al querer ejecutarlo desde delphi 7.0 sale error.

Como podria obtener lo que necesito, que necesitaria modificar el sentencia porque realmente con esa modificacion ya no busco solo ruc repetidos como dice federico

gracias

Coco_jac 28-11-2005 21:00:52

Solo mostrando el RUC, y la cantidad de veces que se repite el RUC si obtengo resultado el cual concuerda correctamente, pero ademas de visualizar el RUC y la cantidad de veces que se repite, necesito visualizar el nombre y el codigo. cosa que no logro mostrar.......

Código:

query1.SQL.Text:='select rfc,count(*) from CLIE01 Group by rfc having count(*)>1';
Espero sus comentarios


La franja horaria es GMT +2. Ahora son las 18:29:50.

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