2014-05-22 132 views
0

我正試圖找出目標中缺少的記錄。我需要那些失蹤記錄的員工。子查詢加入失敗

假設我有輸入源爲

1,Jack,type1,add1,reg3,..,..,.., 
2,Jack,type2,add1,reg3,..,,.,.., 
3,Jack,type3,add2,reg4,..,.,..,., 
4,Rock,,,,,,,, 

,我有輸出

​​

我有1000個號行其他員工和目標我沒有任何重複的記錄。 我需要誰是存在於源和目標具有不同次數 裝置,用於例如在上述採樣數據的僱員我有千斤頂的3項,在源1個條目巖

和目標I只對傑克的條目一個用於岩石

我運行下面的查詢和要求輸出插孔,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 

請幫忙。

+0

請添加示例表tabl的完整表定義(僅限相關列) ES。請問爲什麼所需的輸出是'Jack,3'?我不明白你的問題。 – VMai

回答

0

爲什麼沒有得到有不同的數量時,他們的名字分組這兩行的員工(我想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) 
0

如果您指定了確切的錯誤,那將會非常有幫助。

如果這是你真正的查詢有兩件事:第二個派生表沒有別名(順便說一句,你根本不需要它),至少在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條件: 其中A.CNT1 <> B.CNT2 或b.CNT2 IS NULL