Hace tiempo
planteé un duda similar a la que tengo ahora y pensé que adaptando el código que distéis en su momento podría valerme, pero no he sido capaz.
Tengo este query sobre una vista de FB 2.5.6:
Código SQL
[-]SELECT COUNT(DISTINCT Codigo) Recibos, Periodo, Forma, Municipio
FROM Rc03
WHERE PerPago = 2
AND ForPago IN (2,4)
GROUP BY PerPago, Periodo, ForPago, Forma, Junta, NomJunta
ORDER BY PerPago, Forma, NomJunta
que me da este resultado:

Yo sé que el importe de esos dos registros es de 150€, pero si en el query añado el SUM así:
Código SQL
[-]SELECT COUNT(DISTINCT Codigo) Recibos, SUM(Cuota) Importe, Periodo, Forma, Municipio
FROM Rc03
WHERE PerPago = 2
AND ForPago IN (2,4)
GROUP BY PerPago, Periodo, ForPago, Forma, Junta, NomJunta
ORDER BY PerPago, Forma, NomJunta
lo que salees esto:

y no sé como hacer para que me dé ese resultado.
He intentado haciendo un subselect:
Código SQL
[-]SELECT COUNT(DISTINCT A.Codigo) Recibos, A.Periodo, A.Forma, A.NomJunta,
(SELECT SUM(Cuota) FROM Cuotas WHERE Codigo = A.Codigo)
FROM Rc03 A
WHERE A.PerPago = 2
AND A.ForPago IN (2,4)
GROUP BY A.PerPago, A.Periodo, A.ForPago, A.Forma, A.Junta, A.NomJunta
ORDER BY PerPago, Forma, NomJunta
ya que el importe que hay que sumar está en esa tabla CUOTAS y el campo código es el que relaciona ambas tablas, pero al tratar de ejecutar el query me da un error:
Cita:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).
|
y no se me ocurre como solucionarlo.
También he probado esto otro:
Código SQL
[-]SELECT A.Periodo, A.Forma, A.NomJunta,
(SELECT COUNT(Codigo) FROM Persona WHERE Codigo = A.Codigo),
(SELECT SUM(Cuota) FROM Cuotas WHERE Codigo = A.Codigo)
FROM Rc03 A
WHERE A.PerPago = 2
AND A.ForPago IN (2,4)
GROUP BY A.PerPago, A.Periodo, A.ForPago, A.Forma, A.Junta, A.NomJunta
ORDER BY PerPago, Forma, NomJunta
ya que el campo CODIGO es parte de la clave primaria de esa tabla PERSONA y por lo tanto no está repetido, pero me da el mismo error.