2016-11-09 92 views
1

我有以下COMPANY_TABLE表SQL幫助識別缺少數據

SOURCE UNIQUE_COMPANY_D RECORD_STATE SUB_COMPANY_ID PARENT PRIMARY_PARENT 
ABC 111 Secondary 123  999 
XYZ 111 Primary  456  
YYY 222 Secondary 895  888  888 
TTT 222 Primary  902    888 
VVV 333 Primary  101  777  777 
RRR 333 Secondary 187    777 

在UNIQUE_COMPANY_ID =「111」是問題。

PRIMARY_PARENT不是普及的,它應該基於PARENT填充。如果PARENT字段具有值,則應填充兩行。如果爲null,則必須從第二行獲取值並填充PRIMARY_PARENT值。我有1000萬行,我需要找到Parent填充和Primary parent未填充的場景。基於上述標準。 (如果PARENT字段有值,它應該爲兩行填充,如果爲null,則它必須從第二行獲取值並填充PRIMARY_PARENT值)我想識別1000萬行中的所有錯誤記錄。

我開了下面的SQL:

SELECT * FROM COMPANY_TABLE WHERE PARENT IS NOT NULL AND PRIMARY_PARENT IS NULL; 

但其所有我展示單列。我需要一些能夠讓我排列兩行的東西,並能夠區分這個問題。

+1

你是什麼意思的「區分這個問題」?另外,您確定錯誤值全部爲空,您也不需要檢查空白嗎? – Beninja2

回答

1

你已經錯過的條件之一。您還希望每當PARENT爲NULL時,PRIMARY_PARENT的值等於下一行中的PARENT的值。你可以這樣照顧它:

SELECT * FROM 
(SELECT *, LEAD(PARENT) OVER(Order BY (SELECT NULL)) as LeadParent FROM  COMPANY_TABLE) T 
WHERE PARENT IS NOT NULL AND PRIMARY_PARENT IS NULL 
    OR ((PARENT IS NULL) AND LeadParent != PRIMARY_PARENT); 
0

正如庫馬爾所說,您可以嘗試並測試默認值Parent和Primary_Parent是否爲NULL或空格。

你嘗試:

SELECT * FROM COMPANY_TABLE WHERE PARENT <> '' AND PRIMARY_PARENT <> ''