Mysql 交叉表汇总未收集正确的总计

Mysql 交叉表汇总未收集正确的总计,mysql,sql,crosstab,Mysql,Sql,Crosstab,我有一个关于我在MySQL上运行的交叉表查询的快速问题。我试图列出一个视频游戏中每个角色(标记为Z、S、F、A)的装备总量以及佩戴每件装备的角色总数 我将连接两个表,如下所示: 设备(id、设备、价格、店铺id) charaequipchart(charaid、equipid、abilityid) 然而,我遇到了一个小问题,因为角色可以佩戴多件装备,有些装备可以佩戴在多个角色身上。我用DISTINCT来管理这个。这是我在CASE语句中使用DISTINCT编写的查询 SELECT CASE

我有一个关于我在MySQL上运行的交叉表查询的快速问题。我试图列出一个视频游戏中每个角色(标记为Z、S、F、A)的装备总量以及佩戴每件装备的角色总数

我将连接两个表,如下所示:

设备(id、设备、价格、店铺id)

charaequipchart(charaid、equipid、abilityid)

然而,我遇到了一个小问题,因为角色可以佩戴多件装备,有些装备可以佩戴在多个角色身上。我用DISTINCT来管理这个。这是我在CASE语句中使用DISTINCT编写的查询

   SELECT CASE WHEN EQID is null
   THEN 'Total'
   ELSE Equip END as 'Equip', Z, S, F, A, Total 
   FROM
   (select equipment.id as 'EQID', equipment.equip as 'Equip', 
   count(distinct case when chae.charaid = 1 then chae.equipid 
   end) as 'Z',
   count(distinct case when chae.charaid = 3 then chae.equipid 
   end) as 'S',
   count(distinct case when chae.charaid = 5 then chae.equipid 
   end) as 'F',
   count(distinct case when chae.charaid = 8 then chae.equipid 
   end) as 'A',
   count(chae.equipid) as 'Total'
   from equipment
   join charaequipchart as chae
   on equipment.id = chae.equipid
   group by EQID with rollup) as ch
我的问题是关于“总计”行和列的汇总。事情就是这样

在“总计”列和行的最后一个单元格中,所有内容都应计算到38。我尝试用charid替换CASE语句中的equiid列,结果如下:

在最后一行(Total)之前,“Total”列(这是我想要的结果)中不计算重复项,在最后一行(Total)中,数学变得完全错误


我确信我需要编辑“总计”列的案例陈述,但我在这一点上被难住了。关于如何获得38的任何建议?

显示样本数据和预期结果。请参阅Try
count(distinct(chae.equipid))作为总数