Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Unir duas tabelas com valores distintos

Pessoal, boa tarde!
Estou com uma dúvida e creio que seja simples de resolver, porém já tentei diversas coisinhas e não funciona.
Se puderem me ajudar agradeço..

Tenho duas tabelas ( estou fazendo 2 loads)

SETOR:
NoConcatenate
LOAD DISTINCT CD_SETOR AS TESTE_SETOR_COD_SETOR, cd_setor as chave
FROM C:\Qlikview\Producao\QVD\SETOR.qvd (qvd)
WHERE ID_ATIVO = 'S';

SETOR_1:
NOCONCATENATE
LOAD DISTINCT COD_SETOR AS TESTE_SETOR_COD_SETOR_1
FROM C:\Qlikview\Producao\QVD\ABSENTEISMO.qvd (qvd);

Quero então criar uma tabela unica, com os setores do primeiro LOAD (SETOR)  que não são encontrados no segundo load (SETOR_1).

Como posso fazer isso? Os valores que são identicos nas duas tabelas, quero desconsiderar..

Desde já agradeço a ajuda,

Abs,

Juliana.

1 Solution

Accepted Solutions
Not applicable
Author

Meninos, boa tarde!
Agradeço a dica de todos.

Consegui resolver a questão:

Utilizei o seguinte código:

TESTE_SETOR:

LOAD DISTINCT COD_SETOR  as CD_SETOR_EXCLUDE

FROM C:\Qlikview\Producao\QVD\ABSENTEISMO.qvd (qvd)

;

LOAD DISTINCT CD_SETOR

FROM C:\Qlikview\Producao\QVD\SETOR.qvd (qvd)

WHERE ID_ATIVO = 'S' and

NOT EXISTS(CD_SETOR_EXCLUDE, CD_SETOR);

Obrigada a todos.
Ju

View solution in original post

9 Replies
Not applicable
Author

Ja tentou usar o

Concatenate

Ficaria assim

SETOR:
NoConcatenate
LOAD DISTINCT CD_SETOR AS TESTE_SETOR_COD_SETOR, cd_setor as chave
FROM C:\Qlikview\Producao\QVD\SETOR.qvd (qvd)
WHERE ID_ATIVO = 'S';

Concatenate

SETOR_1:
NOCONCATENATE
LOAD DISTINCT COD_SETOR AS TESTE_SETOR_COD_SETOR_1
FROM C:\Qlikview\Producao\QVD\ABSENTEISMO.qvd (qvd);

Not applicable
Author

Olá Lshimada,

Então, mas com o CONCATENATE entre as duas não funciona. Pois ele une as tabelas.
Eu quero gerar uma terceira tabela, somente com os setores que existem na tabela SETOR e que não existem na tabela SETOR_1.

Alguma dica?


Desde já agradeço.

Ju

Not applicable
Author

Comando LEFT será que nao da certo?

O LEFT ele irá criar uma tabela com os dados da primeira tabela, caso nao de certo tente colocar o KEEP depois do LEFT

SETOR:
NoConcatenate
LOAD DISTINCT CD_SETOR AS TESTE_SETOR_COD_SETOR, cd_setor as chave
FROM C:\Qlikview\Producao\QVD\SETOR.qvd (qvd)
WHERE ID_ATIVO = 'S';

LEFT

SETOR_1:
NOCONCATENATE
LOAD DISTINCT COD_SETOR AS TESTE_SETOR_COD_SETOR_1
FROM C:\Qlikview\Producao\QVD\ABSENTEISMO.qvd (qvd);

Anonymous
Not applicable
Author

Olá Juliana,

de uma olhada na função exists() ... você pode usar ela no where e fazer o que precisa

Not applicable
Author

Olá Rodrigo,
Então eu tentei utilizar já a função exists, porém me dá erro, dizendo que não encontra o campo TESTE_SETOR_COD_SETOR, quando vai criar a terceira tabela "SETOR_OK".

Veja como fiz abaixo:

TESTE_SETOR:
LOAD DISTINCT CD_SETOR AS TESTE_SETOR_COD_SETOR
FROM C:\Qlikview\Producao\QVD\SETOR.qvd (qvd)
WHERE ID_ATIVO = 'S';

TESTE_SETOR_1:
LOAD DISTINCT COD_SETOR AS TESTE_SETOR_COD_SETOR_1
FROM C:\Qlikview\Producao\QVD\ABSENTEISMO.qvd (qvd);

SETOR_OK:
NoConcatenate
LOAD TESTE_SETOR_COD_SETOR
RESIDENT TESTE_SETOR;

CONCATENATE

LOAD TESTE_SETOR_COD_SETOR_1
RESIDENT SETOR_1
WHERE NOT EXISTS(TESTE_SETOR_COD_SETOR, TESTE_SETOR_COD_SETOR_1);

Desde já te agradeço,

Abs,

Juliana.

Not applicable
Author

Olá Juliana,

Pelo que entendi você poderia usar um left join, mas o que percebi no seu codigo é o nome da tabela TESTE_SETOR_1 e no load você colocou apenas SETOR_1. tente com o load abaixo:

TESTE_SETOR:

LOAD DISTINCT CD_SETOR AS TESTE_SETOR_COD_SETOR

FROM C:\Qlikview\Producao\QVD\SETOR.qvd (qvd)

WHERE ID_ATIVO = 'S';

TESTE_SETOR_1:

LOAD DISTINCT COD_SETOR AS TESTE_SETOR_COD_SETOR_1

FROM C:\Qlikview\Producao\QVD\ABSENTEISMO.qvd (qvd);

SETOR_OK:

NoConcatenate

LOAD TESTE_SETOR_COD_SETOR

RESIDENT TESTE_SETOR;

CONCATENATE

LOAD TESTE_SETOR_COD_SETOR_1

RESIDENT TESTE_SETOR_1

WHERE NOT EXISTS(TESTE_SETOR_COD_SETOR_1, TESTE_SETOR_COD_SETOR);

att,

Marco Oliveira

Not applicable
Author

Olá Marco,
Então o nome da tabela errado eu percebi logo depois que postei, foi uma dedada mesmo..
Utilizando o código que você me mandou, apresenta o erro que envio em anexo..

Na verdade eu queria o seguinte:

Tenho a tabela TESTE_SETOR com 44 registros,

A tabela TESTE_SETOR_1 com 35 registros,

Na tabela SETOR_OK, deveria ficar somente com 9 registros. Que são os que tem na tabela TESTE_SETOR

e não estão na TESTE_SETOR_1.

Desde já agradeço,
Juliana.

Not applicable
Author

Olá Rodrigo, boa tarde!

Outra forma que tentei utilizar o exists foi desta maneira:

TESTE_SETOR:
LOAD DISTINCT COD_SETOR  as CD_SETOR
FROM C:\Qlikview\Producao\QVD\ABSENTEISMO.qvd (qvd);

LOAD DISTINCT CD_SETOR
FROM C:\Qlikview\Producao\QVD\SETOR.qvd (qvd)
WHERE ID_ATIVO = 'S' and
NOT EXISTS(COD_SETOR, CD_SETOR);

Porém mesmo assim não funcionou, ele trouxe todos os setores do meu primeiro load.
E eu gostaria de saber somente os setores que tenho no meu segundo load, que não tenho no primeiro load


Desde já te agradeço,

Ju

Not applicable
Author

Meninos, boa tarde!
Agradeço a dica de todos.

Consegui resolver a questão:

Utilizei o seguinte código:

TESTE_SETOR:

LOAD DISTINCT COD_SETOR  as CD_SETOR_EXCLUDE

FROM C:\Qlikview\Producao\QVD\ABSENTEISMO.qvd (qvd)

;

LOAD DISTINCT CD_SETOR

FROM C:\Qlikview\Producao\QVD\SETOR.qvd (qvd)

WHERE ID_ATIVO = 'S' and

NOT EXISTS(CD_SETOR_EXCLUDE, CD_SETOR);

Obrigada a todos.
Ju