Eu tenho um múltiplo de pai e filho hierarquia composta de 100k+ registos. Este é um pequeno subconjunto.
Criança | Pai |
---|---|
1 | 2 |
1 | 3 |
2 | 3 |
Eu preciso ir através de cada valor da coluna Principal e verifique se o mesmo valor também existe na coluna da Criança. Se não, em seguida, criar uma linha com (valor NULO). Neste exemplo, o valor 3 não existe na Criança coluna, de modo que eu preciso para criar uma nova linha com os valores (3, NULL).
Criança | Pai |
---|---|
3 | NULL |
1 | 2 |
1 | 3 |
2 | 3 |
Meu código não retornará um erro, mas ele não fizer o que eu quero fazer.
INSERT IGNORE INTO #table (child, parent)
SELECT (CASE WHEN parent not in (Select child from #table) THEN parent END) as child, Null
FROM #table
Eu recebo muitas novas linhas com (NULL,NULL) mas 0 linhas com (valor NULO). Ele deve, de alguma forma, sempre vá em frente para a cláusula else, quando há tantos novas linhas com (NULL, NULL), mas não sei por que.
Usando o SQL Server Management Studio 17. Qualquer ajuda é muito apreciada.