2016-11-09 103 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 <> ''