我在努力找出目标中丢失的记录。我需要那个记录丢失的雇员。
假设我有输入源作为
1,Jack,type1,add1,reg3,..,..,..,
2,Jack,type2,add1,reg3,..,,.,..,
3,Jack,type3,add2,reg4,..,.,..,.,
4,Rock,,,,,,,,我的产出是
1,Jack,type1,add1,reg3,..,..,..,
4,Rock,,,,,,,,我有1000行给其他员工,在目标中我没有任何重复的记录。我需要在源和目标中的员工有不同的发生方式,例如在上面的样本数据中,我有3条jack条目和1条Rock条目。
在目标中,我只有杰克和罗克的入口处
我在查询下面运行,所需输出是Jack,3
我怎么能得到它。我在下面的查询中出错
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请帮帮忙。
发布于 2014-05-22 14:52:14
当按名称分组时,为什么不让雇员在两个表中有不同数目的行(如果问题中的查询返回名称,则Emp_Number是包含名称的字段)。
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)发布于 2014-05-22 15:16:02
如果您指定了所得到的确切错误,这将是非常有帮助的。
如果这是实际查询,那么有两件事:第二个派生表没有别名(顺便说一句,根本不需要它),至少在Teradata是无效的,这是SQL而不是C。
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
https://stackoverflow.com/questions/23809768
复制相似问题