Firebird SQL分组依据

Firebird SQL分组依据,sql,interbase,Sql,Interbase,我想按列factd\u poste\u fact进行分组,但出现以下错误: SQL错误代码=-104。 select列表中的表达式无效(未包含在聚合函数或GROUP BY子句中) 代码: 您需要在子查询的group by中包含facture\u detail.fact\n SELECT f.fact_n, poste_facture, sum_montant_ttc FROM factures f LEFT OUTER JOIN (SELECT fact_n, (factd_poste_fact

我想按列
factd\u poste\u fact
进行分组,但出现以下错误:

SQL错误代码=-104。
select列表中的表达式无效(未包含在聚合函数或GROUP BY子句中)

代码:


您需要在子查询的group by中包含facture\u detail.fact\n

SELECT f.fact_n, poste_facture, sum_montant_ttc
FROM factures f
LEFT OUTER JOIN (SELECT fact_n, (factd_poste_fact) AS poste_facture, SUM(factd_montant_ttc) AS sum_montant_ttc
                 FROM facture_detail
                 GROUP BY factd_poste_fact, fact_n
                ) fact_d ON (f.fact_n = fact_d.fact_n)

GROUP BY f.fact_n, poste_facture, sum_montant_ttc

如果在group by子句中未列出这些列,则不能选择聚合函数之外的列。在这里的子选择中,您列出了事实,但您没有对此进行分组。为什么在主/外部查询中按分组?(那里没有聚合函数。)子查询无效,必须决定如何处理facture_detail.factd_poste_事实)SQL错误代码=-104。令牌未知-第13行第40列,。如果从GROUPBY子句中删除括号会发生什么情况?非常感谢,删除括号后效果会很好
SELECT f.fact_n, poste_facture, sum_montant_ttc
FROM factures f
LEFT OUTER JOIN (SELECT fact_n, (factd_poste_fact) AS poste_facture, SUM(factd_montant_ttc) AS sum_montant_ttc
                 FROM facture_detail
                 GROUP BY factd_poste_fact, fact_n
                ) fact_d ON (f.fact_n = fact_d.fact_n)

GROUP BY f.fact_n, poste_facture, sum_montant_ttc