Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Group by 如何与Firebird一起使用GROUP BY?_Group By_Firebird_Firebird2.5 - Fatal编程技术网

Group by 如何与Firebird一起使用GROUP BY?

Group by 如何与Firebird一起使用GROUP BY?,group-by,firebird,firebird2.5,Group By,Firebird,Firebird2.5,我正在尝试在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 functi

我正在尝试在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中简单使用GROUPBY,GROUPBY all列

 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)

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

请注意,这比SQL标准更严格,SQL标准允许您省略功能相关列(即,如果指定主键或唯一键,则不需要指定该表的其他列)


您没有指定要分组的原因(因为使用此查询进行分组没有多大意义)。也许您希望
排序,或者您希望Firebird的每个
M_CODIGO

的第一行我需要在所有列中使用GROUP BY?例如,如果我只想使用GROUP BY to
id
不起作用?@FernandoPaiva我建议您描述一下您想要实现的目标,因为不使用聚合函数的列进行分组是没有意义的。