首页 > 解决方案 > SQL 计算不同的匹配值

问题描述

我为此苦苦挣扎了一段时间:

我有 2 个表出版商和学生。

我试图编写一个查询来计算有多少学生共享 postccode 或“pcode”文本值。我使用的数据前后都有前导空格,我也打算在查询中处理它。另一个问题是,一旦您从任一侧修剪这些空间,一些出版商就有相同的邮政编码,所以我需要计算与修剪过的学生邮政编码相等的唯一修剪过的出版商邮政编码。

在尝试以下操作时,我在第一行的右括号中遇到了某种语法错误,我真的很难过

除了语法错误之外,我不太确定这是否会起作用

SELECT COUNT(DISTINCT(LTRIM(RTRIM(publishers.pcode)))) As pubpcode 
  FROM publishers, students
 WHERE (LTRIM(RTRIM((publishers.pcode))))) = pubpcode;

标签: sqlsqlite

解决方案


我建议做union all然后汇总:

select trim(pcode), sum(is_student), sum(is_pub)
from (select pcode, 1 as is_student, 1 as is_pub
      from students
      union all
      select pcode, 0, 1
      from publisher
     ) sp
group by trim(pcode)

推荐阅读