SQL 帮助识别缺失数据
SQL help to identify the Missing Data
我有以下COMPANY_TABLEtable
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 字段有值,它应该为两行填充。如果为空,它必须从辅助行中获取值并填充 PRIMARY_PARENT 值)我想从 1000 万行中识别所有错误记录。
我创建了下面的 SQL :
SELECT * FROM COMPANY_TABLE WHERE PARENT IS NOT NULL AND PRIMARY_PARENT IS NULL;
但所有这些都显示为单行。我需要一些可以让我按顺序排列两行并能够区分问题的东西。
如 Kumar 所述,您可以尝试并测试默认值 Parent 和 Primary_Parent 是否为 NULL 或空白。
你试过了吗:
SELECT * FROM COMPANY_TABLE WHERE PARENT <> '' AND PRIMARY_PARENT <> ''
您不符合其中一个条件。您还希望只要 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);
我有以下COMPANY_TABLEtable
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 字段有值,它应该为两行填充。如果为空,它必须从辅助行中获取值并填充 PRIMARY_PARENT 值)我想从 1000 万行中识别所有错误记录。
我创建了下面的 SQL :
SELECT * FROM COMPANY_TABLE WHERE PARENT IS NOT NULL AND PRIMARY_PARENT IS NULL;
但所有这些都显示为单行。我需要一些可以让我按顺序排列两行并能够区分问题的东西。
如 Kumar 所述,您可以尝试并测试默认值 Parent 和 Primary_Parent 是否为 NULL 或空白。
你试过了吗:
SELECT * FROM COMPANY_TABLE WHERE PARENT <> '' AND PRIMARY_PARENT <> ''
您不符合其中一个条件。您还希望只要 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);