如何在 Firebird 中使用 GROUP BY?

How to use GROUP BY with Firebird?

我正在尝试在 Firebird 中使用 GROUP BY 创建一个 SELECT,但我没有成功。我该怎么做?

异常

Can't format message 13:896 -- message file C:\firebird.msg not found.
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).
(49,765 sec)

正在尝试

SELECT FA_DATA, FA_CODALUNO, FA_MATERIA, FA_TURMA, FA_QTDFALTA,
               ALU_CODIGO, ALU_NOME,
               M_CODIGO, M_DESCRICAO,
               FT_CODIGO, FT_ANOLETIVO, FT_TURMA
               FROM FALTAS Falta
               INNER JOIN ALUNOS Aluno ON (Falta.FA_CODALUNO = Aluno.ALU_CODIGO)
               INNER JOIN MATERIAS Materia ON (Falta.FA_MATERIA = Materia.M_CODIGO)
               INNER JOIN FORMACAOTURMAS Turma ON (Falta.FA_TURMA = Turma.FT_CODIGO)
               WHERE (Falta.FA_CODALUNO = 238) AND (Turma.FT_ANOLETIVO = 2015) 
               GROUP BY Materia.M_CODIGO

firebird中group by的简单使用,按所有列分组

 select * from T1 t
where t.id in
(SELECT t.id FROM T1 t 
 INNER JOIN T2 j  ON j.id = t.jid 
 WHERE t.id = 1
 GROUP BY t.id)

使用 GROUP BY 在您的示例代码中没有意义。它仅在使用聚合函数时有用(+ 其他一些次要用途)。在任何情况下,Firebird 都要求您指定 SELECT 列列表中的所有列,但 GROUP BY 子句中具有聚合函数的列除外。

请注意,这比 SQL 标准更严格,后者允许您省略功能相关的列(即,如果您指定了主键或唯一键,则无需指定另一个table).

的列

您没有指定要分组的原因(因为使用此查询进行分组没有多大意义)。也许您想要 ORDER BY,或者您想要每个 M_CODIGO.

的第一行