Firebird te permite mezclar la forma en que haces los joins, pero por ej MSSQL no logra resolver los nombres de campo dentro del join. Y aunque el motor te permita hacer los joins de esta manera, en pro de la legibilidad, recomendaría mantener una sola forma de hacer los joins.
Código SQL
[-]
SELECT
A.FechaPago, A.Empleado, A.Contrato,
A.CodigoConcepto, B.NombreConcepto,
A.ValorPago
FROM Pagos A, Conceptos B
INNER JOIN GruposConceptos C
ON A.Empresa = C.Empresa
AND A.CodigoConcepto = C.CodigoConcepto
AND C.CodigoGrupo = 50
WHERE A.Empresa = B.Empresa
AND A.CodigoConcepto = B.CodigoConcepto
AND A.Empresa = 9
AND A.FechaPago BETWEEN '01/01/2010' AND '31/12/2019'
ORDER BY A.FechaPago, A.Empleado, A.Contrato,
C.PrioridadEnGrupo, B.TipoConcepto, A.CodigoConcepto
Código SQL
[-]
SELECT
A.FechaPago, A.Empleado, A.Contrato,
A.CodigoConcepto, B.NombreConcepto,
A.ValorPago
FROM Pagos A
INNER JOIN Conceptos B
ON A.Empresa = B.Empresa
AND A.CodigoConcepto = B.CodigoConcepto
INNER JOIN GruposConceptos C
ON A.Empresa = C.Empresa
AND A.CodigoConcepto = C.CodigoConcepto
AND C.CodigoGrupo = 50
WHERE A.Empresa = 9
AND A.FechaPago BETWEEN '01/01/2010' AND '31/12/2019'
ORDER BY A.FechaPago, A.Empleado, A.Contrato,
C.PrioridadEnGrupo, B.TipoConcepto, A.CodigoConcepto
Es de anotar, que solo es legibilidad. El plan de ejecución es igual para ambas consultas