2014-02-21 50 views
0

所以列標題是: HITL HITD LST L-型lnum緩衝區裏的NPI DOB midn FSTN LSTN hitn SSN地址Access 2007的SQL查詢清理與聯盟

的表是: SupHR CR

我需要做的一個工會,一起加入。一些SSN也是NULL,以及一些DOB。這是我想出來的。它保持返回聯合的語法錯誤。我確定我需要清理它很多。

SELECT suphr.hitl, suphr.hitd, suphr.lst, suphr.ltype, suphr.lnum, suphr.npi, suphr.dob, suphr.midn, suphr.fstn, suphr.lstn, suphr.hitn, suphr.ssn, suphr.Address, cr.hitl, cr.hitd 
FROM suphr INNER JOIN cr ON (cr.ssn = suphr.ssn) 
Where suphr.ssn IS NOT NULL AND((cr.hitd = suphr.hitd) AND (cr.hitl <> suphr.hitd)) 


Union 
SELECT suphr.hitl, suphr.hitd, suphr.lst, suphr.ltype, suphr.lnum, suphr.npi, suphr.dob, suphr.midn, suphr.fstn, suphr.lstn, suphr.hitn, suphr.ssn, suphr.Address, cr.hitl, cr.hitd 
FROM suphr INNER JOIN cr ON (cr.ssn = suphr.ssn) 
Where ((suphr.ssn IS NULL) AND (suphr.dob IS NOT NULL)) AND((cr.hitd = suphr.hitd) AND (cr.hitl <> suphr.hitd)) 

Union 
SELECT suphr.hitl, suphr.hitd, suphr.lst, suphr.ltype, suphr.lnum, suphr.npi, suphr.dob, suphr.midn, suphr.fstn, suphr.lstn, suphr.hitn, suphr.ssn, suphr.Address, cr.hitl, cr.hitd 
FROM suphr INNER JOIN cr ON (cr.lstn = suphr.lstn) 
WHERE ((suphr.ssn IS NULL) AND (suphr.dob IS NULL) AND (cr.fstn = suphr.lstn) AND ((cr.hitd = suphr.hitd) AND (cr.hitl <> suphr.hitd)) 

不知道我該怎麼修復。

附錄:所有數據類型與文本的日期除外。

回答

0

這裏是正確的語法 - 它不會產生錯誤(錯誤在第3個查詢Where'子句中)。另外,您的第二個查詢將永遠不會返回任何結果(IMO),因爲您將INNER JOIN核潛艇領域,並要求一個爲空。空值不攀比打好。

SELECT suphr.hitl, suphr.hitd, suphr.lst, suphr.ltype, suphr.lnum, suphr.npi, suphr.dob, suphr.midn, suphr.fstn, suphr.lstn, suphr.hitn, suphr.ssn, suphr.Address, cr.hitl, cr.hitd 
FROM suphr INNER JOIN cr ON suphr.ssn = cr.ssn 
WHERE (((suphr.ssn) Is Not Null) AND ((cr.hitl)<>[suphr].[hitd]) AND ((cr.hitd)=[suphr].[hitd])); 
union 
SELECT suphr.hitl, suphr.hitd, suphr.lst, suphr.ltype, suphr.lnum, suphr.npi, suphr.dob, suphr.midn, suphr.fstn, suphr.lstn, suphr.hitn, suphr.ssn, suphr.Address, cr.hitl, cr.hitd 
FROM suphr RIGHT JOIN cr ON suphr.ssn = cr.ssn 
WHERE (((suphr.dob) Is Not Null) AND ((suphr.ssn) Is Null) AND ((cr.hitl)<>[suphr].[hitd]) AND ((cr.hitd)=[suphr].[hitd])); 
UNION 
SELECT suphr.hitl, suphr.hitd, suphr.lst, suphr.ltype, suphr.lnum, suphr.npi, suphr.dob, suphr.midn, suphr.fstn, suphr.lstn, suphr.hitn, suphr.ssn, suphr.Address, cr.hitl, cr.hitd 
FROM suphr INNER JOIN cr ON suphr.lstn = cr.lstn 
WHERE (((suphr.dob) Is Null) AND ((suphr.ssn) Is Null) AND ((cr.hitl)=[suphr].[hitd]) AND ((cr.hitd)=[suphr].[hitd]) AND ((cr.fstn)=[suphr].[lstn]));