PDA

Ver la Versión Completa : Error con sentencia SQL


Coco_jac
28-11-2005, 18:57:29
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:


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

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.


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

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

Espero sus comentarios