我有以下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;
但所有它都显示我单行。我需要的东西可以让我按顺序排列两行,并能够区分问题。
答案 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 <> ''