SQL帮助识别缺失数据

时间:2016-11-09 20:09:22

标签: mysql sql oracle-sqldeveloper

我有以下COMPANY_TABLE表

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

IN WHERE 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;

但所有它都显示我单行。我需要的东西可以让我按顺序排列两行,并能够区分问题。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

正如Kumar所说,您可以尝试测试以查看默认值Parent和Primary_Parent是否为NULL或空白。

你有没有尝试过:

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