首页 > 解决方案 > 如何按两列分组?

问题描述

桌子:

在此处输入图像描述

询问:

SELECT cintitule , cperiode , SUM(nmontant) FROM tsal_mois 
WHERE cperiode between "201901" AND "201912" 
GROUP BY cperiode, cintitule

结果:

在此处输入图像描述

问题:

我想按“cperiode”列分组。

例如:我想要的结果

                                 "date"
ccodrub    cintitule            all-cperiode           sum_nmontant
 001       Salaire de Base          2019               (I want all 
 001       Salaire de Base          2018               sum of all in 2019)    
                                    (I want all
                                    the years
                                      grouped by)
                        " the dates are by months
                          I want it by year"

编辑 这个查询是我需要的:

SELECT ccodrub, cintitule  , SUM(nmontant) FROM tsal_mois WHERE cperiode between "201901" AND "201912" GROUP BY  cintitule , ccodrub

谢谢你

标签: sql

解决方案


您可以使用字符串(或数学)函数来提取年份。假设这cperiode是一个字符串:

SELECT cintitule , LEFT(cperiode, 4) as year, SUM(nmontant)
FROM tsal_mois 
WHERE cperiode between '201901"'AND '201912'
GROUP BY cintitule, LEFT(cperiode, 4);

大多数数据库都支持LEFT(), 对于那些不使用相应功能的人。

如果cperiod实际上是一个数字,则FLOOR(cperiod/100)改为使用。


推荐阅读