如何通过mysql查询得到不同年份的总和?

如何通过mysql查询得到不同年份的总和?,mysql,sql,database,sum,Mysql,Sql,Database,Sum,这是我的疑问: SELECT llx_societe.nom as "Customer", sum(llx_facturedet.total_ht) AS "2020" FROM llx_facture AS t LEFT JOIN llx_societe ON t.fk_soc = llx_societe.rowid LEFT JOIN llx_facturedet ON t.rowid = llx_facturedet.fk_facture LEFT

这是我的疑问:

SELECT llx_societe.nom as "Customer",
sum(llx_facturedet.total_ht) AS "2020"
FROM llx_facture AS t
LEFT JOIN llx_societe ON t.fk_soc = llx_societe.rowid
LEFT JOIN llx_facturedet ON t.rowid = llx_facturedet.fk_facture
LEFT JOIN llx_product ON llx_facturedet.fk_product = llx_product.rowid
WHERE date_format(t.datef,'%Y') = '2020' AND t.entity IN (1,3)
GROUP BY llx_societe.nom
ORDER BY 2 DESC;
就像2020年的结果一样,我想再添加两列,分别命名为2019和2018。
我曾想过联合,但没有成功。我被困在这里,请指导我使用条件聚合:

SELECT llx_societe.nom as "Customer",
       SUM(CASE WHEN year(t.datef) = 2020 THEN llx_facturedet.total_ht ELSE 0 END) AS "2020",
       SUM(CASE WHEN year(t.datef) = 2019 THEN llx_facturedet.total_ht ELSE 0 END) AS "2019",
       SUM(CASE WHEN year(t.datef) = 2018 THEN llx_facturedet.total_ht ELSE 0 END) AS "2018",
FROM llx_facture t LEFT JOIN
     llx_societe
     ON t.fk_soc = llx_societe.rowid LEFT JOIN
     llx_facturedet
     ON t.rowid = llx_facturedet.fk_facture LEFT JOIN
     llx_product
     ON llx_facturedet.fk_product = llx_product.rowid
WHERE t.entity IN (1, 3)
GROUP BY llx_societe.nom
ORDER BY 2 DESC;

如果您的表还包含其他年份的记录,则可以通过添加where条件来帮助筛选:
t.datef介于CAST('2018-01-01'作为日期)和CAST('2020-12-31'作为日期)
。否则,您的结果中可能会有(老)客户全部为零。谢谢,我的问题已经解决:)