首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SubQuery连接失败

SubQuery连接失败
EN

Stack Overflow用户
提问于 2014-05-22 14:30:40
回答 2查看 50关注 0票数 0

我在努力找出目标中丢失的记录。我需要那个记录丢失的雇员。

假设我有输入源作为

代码语言:javascript
复制
1,Jack,type1,add1,reg3,..,..,..,
2,Jack,type2,add1,reg3,..,,.,..,
3,Jack,type3,add2,reg4,..,.,..,.,
4,Rock,,,,,,,,

我的产出是

代码语言:javascript
复制
1,Jack,type1,add1,reg3,..,..,..,
4,Rock,,,,,,,,

我有1000行给其他员工,在目标中我没有任何重复的记录。我需要在源和目标中的员工有不同的发生方式,例如在上面的样本数据中,我有3条jack条目和1条Rock条目。

在目标中,我只有杰克和罗克的入口处

我在查询下面运行,所需输出是Jack,3

我怎么能得到它。我在下面的查询中出错

代码语言:javascript
复制
select A.EMP_NUMBER,A.CNT1
from

(select EMP_NUMBER,count(EMP_NUMBER) as CNT1
 from EMPLOYEE_SOURCE
 group by EMP_NUMBER ) as A

INNER JOIN 

 (select B.EMP_NUMBER,B.CNT2
  from (select EMP_NUMBER,count(EMP_NUMBER) as CNT2  
        from EMPLOYEE_TARGET 
        group by EMP_NUMBER )as B )

 ON (A.EMP_NUMBER = B.EMP_NUMBER)

 where A.CNT1 != B.CNT2

请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-22 14:52:14

当按名称分组时,为什么不让雇员在两个表中有不同数目的行(如果问题中的查询返回名称,则Emp_Number是包含名称的字段)。

代码语言:javascript
复制
SELECT s.Emp_Number, Count(s.Emp_Number)
FROM   EMPLOYEE_SOURCE s
       LEFT JOIN EMPLOYEE_TARGET t ON s.Emp_Number = t.Emp_Number
GROUP BY s.Emp_Number
HAVING Count(s.Emp_Number) != Count(t.Emp_Number)
票数 0
EN

Stack Overflow用户

发布于 2014-05-22 15:16:02

如果您指定了所得到的确切错误,这将是非常有帮助的。

如果这是实际查询,那么有两件事:第二个派生表没有别名(顺便说一句,根本不需要它),至少在Teradata是无效的,这是SQL而不是C。

代码语言:javascript
复制
select A.EMP_NUMBER,A.CNT1
from  
 (
  select EMP_NUMBER,count(EMP_NUMBER) as CNT1
  from EMPLOYEE_SOURCE
  group by EMP_NUMBER
 ) as A    
INNER JOIN 
 (
   select EMP_NUMBER,count(EMP_NUMBER) as CNT2  
   from EMPLOYEE_TARGET 
   group by EMP_NUMBER
 ) as B
ON (A.EMP_NUMBER = B.EMP_NUMBER)
where A.CNT1 <> B.CNT2

如果第二个表中缺少一个雇员,您可能必须按照Serpiton的建议使用一个外部联接,并添加一个附加的where -条件:where A.CNT1 <> B.CNT2或b.CNT2为NULL

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23809768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档