Ver Mensaje Individual
  #1  
Antiguo 14-04-2023
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Reputación: 19
Angel.Matilla Va por buen camino
Encontrar valor para el mínimo

Buenas tardes. Aquí estoy otra vez dando la lata.

Tengo esta tabla en FB:
Código SQL [-]
CREATE TABLE MESAS (
  CODIGO INTEGER NOT NULL,
  MUNICIPIO INTEGER DEFAULT 1 NOT NULL,
  DISTRITO SMALLINT NOT NULL,
  SECCION SMALLINT NOT NULL,
  MESA VARCHAR(2) CHARACTER SET ISO8859_1 DEFAULT 'U' NOT NULL COLLATE ES_ES_CI_AI);
que tiene, por ejemplo, estos datos:

Necesito un query que me dé el valor del campo código para el mínimo de la combinación Distrito, Sección y Mesa para cada municipio.

He hecho varias pruebas. Con este query:
Código SQL [-]
SELECT Municipio, MIN(Distrito||Seccion||Mesa)
FROM Mesas
Group BY Municipio
Obtengo esto:

Es correcto porque para cada municipio me dice el valor mínimo de la combinación. Sin embargo si en vez de municipio uso el campo código, que es el valor que necesito, así:
Código SQL [-]
SELECT Codigo, MIN(Distrito||Seccion||Mesa)
FROM Mesas
GROUP BY Codigo
lo que obtengo es esto:

Evidentemente este no es el resultado que me interesa porque me saca en la mayoría de los casos más de un resultado por municipio. He probado también con la cláusula HAVING:
Código SQL [-]
SELECT Codigo
FROM Mesas
GROUP BY Codigo
HAVING Distrito||Seccion||Mesa = MIN(Distrito||Seccion||Mesa)
pero las distintas combinaciones que he probado con ella me dan siempre el mismo error:
Cita:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the HAVING clause (neither an aggregate function nor a part of the GROUP BY clause).
y al traducirlo (mi inglés es muy limitado) me dice esto:
Cita:
Expresión no válida en la cláusula HAVING (ni una función agregada ni una parte de la cláusula GROUP BY).
cosa, por otra parte, que no entiendo. ¿Alguna sugerencia?
Responder Con Cita