代码之家  ›  专栏  ›  技术社区  ›  kovarov

Firebird SQL分组依据

  •  1
  • kovarov  · 技术社区  · 10 年前

    我想按列分组 factd_poste_fact 但我得到了这个错误:

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

    代码:

    select
       f.fact_n,
       poste_facture ,
       sum_montant_ttc
    from 
       factures f
    left outer join
       (select
           facture_detail.fact_n,
           (facture_detail.factd_poste_fact) as poste_facture,
           sum(facture_detail.factd_montant_ttc) as sum_montant_ttc
        from 
           facture_detail
        group by    
           (fact_d.fact_n,facture_detail.factd_poste_fact)
    group by
        f.fact_n, poste_facture, sum_montant_ttc
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Matt    10 年前

    您需要在子查询中的分组依据中包含facture_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
    
    推荐文章