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 11-07-2015
Avatar de Vampiro_MABM
Vampiro_MABM Vampiro_MABM is offline
Miembro
NULL
 
Registrado: jul 2015
Ubicación: México, D.F.
Posts: 4
Poder: 0
Vampiro_MABM Va por buen camino
Unhappy Duda con group by y substring!!!!

Hola, antes que nada me presento me llamo Miguel Angel Blanco, he leído con mucho interés este foro la verdad es que me ha sacado de varios apuros, agradezco por eso.

En fin, como suele suceder, tendemos a buscar foros cuando algo se nos atora, he leído mucho aquí sobre la sentencia Substring, sin embargo no encontré algo similar a lo que pretendo obtener, les cuento.

Tengo un campo cvl_ubica de tipo string y guarda algo similar a esto '090161040' donde los primeros dos dígitos (09) se refieren a la entidad, los siguientes 3 (016) a la delegación/municipio y los 4 últimos (1040) a la colonia, lo que pretendo obtener es lo siguiente:

cvl_mater - substring(clv_mater from 1 for 2) - substring(clv_mater from 3 for 3) - Total
090161040 - 09 - 016 - 1
090171204 - 09 - 017 - 2
150231112 - 15 - 023 - 6

La finalidad como ya lo habran deducido es saber cuantas delegaciones/municipio hay en cada entidad.

Mi Query es el siguiente:
Código SQL [-]
select clv_ubica,
       substring(clv_ubica from 1 for 2) as clv,
       substring(clv_ubica from 3 for 3) as clv00,
       count(clv_ubica) as total
from secce0
group by clv_ubica

Pero al correrlo manda este mensaje:

No tengo aun permitido subir imágenes o enlaces, por lo pronto les dejo el mensaje:

Project SIIEEBA.exe raised exception class EDBEngineError whit message 'Expresions in group by are not suported.'
stopped. Use Step or Run to continue.

Última edición por ecfisa fecha: 11-07-2015 a las 19:59:07. Razón: Etiquetas [sql] [/sql]
Responder Con Cita
  #2  
Antiguo 11-07-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, bienvenido a clubdelphi, por favor, no olvides leer nuestra guía de estilo, gracias.

En cuanto a tu duda, falta un detalle importante: ¿qué sistema de base de datos estás usando?
Por cierto, el BDE está muy obsoleto, ya va siendo hora de actualizarse

Aunque todavía no tengas permiso para poner imágenes, hazlo de todas formas, y un moderador pondrá el enlace adecuado para que se muestre.

Tampoco entiendo bien qué datos quieres obtener con ese ejemplo.

¡Ah!, y no olvides poner las etiquetas cuando pongas código fuente (en este caso te lo ha puesto el moderador ecfisa)
Ejemplo:

Responder Con Cita
  #3  
Antiguo 11-07-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Vampiro_MABM.

No soy experto en Paradox, sin embargo en este artículo:SQL: Using the SUBSTRING Function, se menciona:
Cita:
As the SUBSTRING function is not supported at all by IB or LIBS databases, it is not possible to have a substring operation in the column list of a query (exception: IB can do sub-strings via User-Defined Functions).

But through use of the LIKE operator and the accompanying character substitution marker, it is possible to effect a sub-string in a WHERE clause. For example, using the sample table EMPLOYEE (in the EMPLOYEE.GDB database)
Creo que en este caso el problema se produce por que cuando usas la columna CLV_UBICA como argumento de la función SUBSTRING, Paradox la promueve como expresión, de allí el mensaje de error:
Cita:
Expresions in group by are not suported
También te podría resultar interesante leer este enlace: Query con SUBSTRING y GROUP BY

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 12-07-2015
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.409
Poder: 22
fjcg02 Va camino a la fama
Hola
Código SQL [-]
select clv_ubica,
       substring(clv_ubica from 1 for 2) as clv,
       substring(clv_ubica from 3 for 3) as clv00,
       count(clv_ubica) as total
from secce0
group by clv_ubica
en principio, en una select con agrupación, todos los campos que no aparecen en el group by deben tener una función de agregado.

Es decir, debería ser algo así como esto.

Código SQL [-]
select 
       substring(clv_ubica from 1 for 2) as clv,
       substring(clv_ubica from 3 for 3) as clv00,
       count(clv_ubica) as total
from secce0
group by substring(clv_ubica from 1 for 2), substring(clv_ubica from 3 for 3)
He quitado clv_ubica porque si no te saldría un afila por cada valor de ese campo, es decir, nada que puedas utilizar.

Bueno, aver si tienes suerte. Por un lado no te da error, y por otro, consigues la información que necesitas.

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -

Última edición por nlsgarcia fecha: 12-07-2015 a las 17:13:25. Razón: Sintaxis SQL
Responder Con Cita
  #5  
Antiguo 12-08-2015
Avatar de Vampiro_MABM
Vampiro_MABM Vampiro_MABM is offline
Miembro
NULL
 
Registrado: jul 2015
Ubicación: México, D.F.
Posts: 4
Poder: 0
Vampiro_MABM Va por buen camino
Thumbs up Gracias, muchas gracias....

Gracias a todos por sus respuestas, prometo pronto ponerme trucha para aportar y aprovechar este foro.

Casmiro Notevi: He leído la guía y como ya prometi, me pondré las pilas para participar correctamente, respecto al BDE que utilizo es paradox y tablas creadas en fox2.0 hace unos 10 años, estamos en proceso de cambiar el motor, pero en el gobierno todo lo sencillo y que no le deja lana a los administradores, tarda en hacerse o de plano no se hace.

Ecfisa: Gracias por el apoyo para darle formato a mi query. Leí el tema que me recomendaste y me ayudo a resolver el problema.

Saludos.

Pd. La semana pasada probé la solución que me propuso el amigo fjcg02, lamentablemente no funciono, sigue marcando error, pero gracias a las referencias y apoyo que me dieron obtuve una solución que aunque no me da directo el resultado si me permite manipular lo que arroja el query para solucionar el problema, muchas gracias a todos....

Este es el nuevo código:

Código SQL [-]
select clv_ubica, count(substring(clv_ubica from 3 for 3)) as total from secce0 group by clv_ubica



Pd. Ofrezco una disculpa por la tardanza en la contestación, pero algo pasa con mi maquina de la oficina pues no puedo responder mensajes. Ahora que estoy de vacaciones me traje la lap a casa y parece que aqui no hay problema.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Query con SUBSTRING y GROUP BY Angel.Matilla Tablas planas 20 13-01-2014 16:48:21
Impresion de group header group footer Manuel Impresión 3 11-11-2007 01:05:23
consultas anidadas: group by dentro otro group by DobleSiete SQL 7 31-01-2005 14:59:31
Substring seduerey Varios 1 21-05-2004 19:27:33
Group Header, Detail y Footer Group en la misma pagina MarcelRuz Impresión 0 20-04-2004 23:27:14


La franja horaria es GMT +2. Ahora son las 04:35:11.


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