Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
Not applicable

Como posso simular um "not in" em um script com arquivo qvd?

Ola, saudação a todos

Sou desenvolvedor novo no Qlikview e gostaria de saber das possibilidades simular dentro de uma clausula "Where" um filtro do tipo "not in". Na linguagem SQL o que eu quero fazer funciona assim:

Select * from tabela where not in(valorA, valorB, valorC....)

O objetivo é consultar os registros que não estiverem em uma lista separada por virgulas

1 Solution

Accepted Solutions
Not applicable

Como posso simular um "not in" em um script com arquivo qvd?

Ol� pessoal, Mais uma forma de fazer:
Teste:LOAD Campo2 AS UFRESIDENT BaseWHERE NOT Match(Campo1,'Valor1','Valor2','Valor3');
Se precisar de coisas como: iniciado com A, que tenha o valor X, pode ainda utilizar WildMatch que aceita caracteres curingas ? e *. Ainda tem o MixMatch, que faz o mesmo que que o Match mas sem diferenciar minusculas de mai�sculas. Abra�o!
9 Replies
Not applicable

Como posso simular um "not in" em um script com arquivo qvd?

Olá,

Para fazer um "not in ()" vc deve utilizar um "Not Exists()"


valores:
LOAD * INLINE [
NOME_CAMPO
VALORA
VALORB
VALORC
];
Select * from tabela where not EXISTS(NOME_CAMPO, CAMPO_TABELA)
drop table valores;


Espero que isso lhe ajude.

Abraços.

Tonial.

Not applicable

Como posso simular um "not in" em um script com arquivo qvd?

Obrigado Fernando, mas não é bem isso. Vou especificar bem o que quero, para que possa entender melho tenho um arquivo do tipo QVD e preciso fazer a pesquisa, mas essa não poderá retornar os registros que tiverem no CAMPO1 os valores de uma lista, que em meu caso vem de uma variável e que pode ser 1 valor ou vários valores separados por virgula. veja abaixo como está o script

-" LOAD * FROM ARQUIVO.QVD (qvd) WHERE CAMPO1 NOT IN('$(VAR1)');"

VAR1 = 'bbb', 'ccc', 'ddd'

assim se em meu QVD é

CAMPO1

CAMPO2

CAMPO3

aaa

Valor x1

Valor y1

bbb

Valor x2

Valor y2

ccc

Valor x3

Valor y3

ddd

Valor x4

Valor y3

eee

Valor x5

Valor y4

fff

Valor x6

Valor y5



o retorno deverá ser

CAMPO1

CAMPO2

CAMPO3

aaa

Valor x1

Valor y1

eee

Valor x5

Valor y4

fff

Valor x6

Valor y5



Not applicable

Como posso simular um "not in" em um script com arquivo qvd?

Certo Mauro,

Seguindo esse seu exemplo, vc pode fazer assim:


//Definição de variável em QlikView.
SET VAR_ORIGINAL = "'bbb', 'ccc', 'ddd'";
//Laço para verificar todas possibilidades da variável
FOR EACH campo in $(VAR_ORIGINAL)
trace $(campo);
TMP_NOT_IN:
LOAD * INLINE [
CAMPO1
$(campo)
];
NEXT
//Leitura da tabela sem os valores do campo1 contidos na variável.
TESTE:
LOAD CAMPO1,
CAMPO2,
CAMPO3
FROM TMP_TESTE.QVD (qvd)
WHERE NOT EXISTS(CAMPO1);
//Elimina tabela temporária.
DROP TABLE TMP_NOT_IN;


O retorno da tabela teste é exatamente oq vc deseja.

Abraços.

Tonial.

Employee
Employee

Como posso simular um "not in" em um script com arquivo qvd?

Um simples load inline resolve o problema.


Temp:
LOAD * INLINE [
CAMPO1
bbb
ccc
ddd
];

TESTE:
LOAD CAMPO1,
CAMPO2,
CAMPO3
FROM TMP_TESTE.QVD (qvd)
WHERE NOT EXISTS(CAMPO1);

DROP TABLE Temp;


Not applicable

Como posso simular um "not in" em um script com arquivo qvd?

Grande Caique, esse havia sido a minha sujestão para o Mauro, mas ele disse que o valor dele esta em uma variável. Porisso tive que fazer um for each para gerar a tabela com um campo e com os valores necessários.

Abraços.

Tonial.

Not applicable

Como posso simular um "not in" em um script com arquivo qvd?

Ol� pessoal, Mais uma forma de fazer:
Teste:LOAD Campo2 AS UFRESIDENT BaseWHERE NOT Match(Campo1,'Valor1','Valor2','Valor3');
Se precisar de coisas como: iniciado com A, que tenha o valor X, pode ainda utilizar WildMatch que aceita caracteres curingas ? e *. Ainda tem o MixMatch, que faz o mesmo que que o Match mas sem diferenciar minusculas de mai�sculas. Abra�o!
pablolabbe
Valued Contributor II

Como posso simular um "not in" em um script com arquivo qvd?

Todas as respostas estão corretas, so depende como virá a informação de exclusão de registros.

Not applicable

Como posso simular um "not in" em um script com arquivo qvd?

Boa Tarde a todos

Estou de volta e gostaria de agradecer a todos pelas respostas postadas. Apenas como retorno consegui o resultado esperado com a adaptação de algumas respostas. Na realidade postei com o intuíto de participar e verificar se existia uma maneira mais direta de resolver este problema e sem o uso de uma tabela auxiliar.
Mais um vez, Obrigado a todos.

aderlanrm
Valued Contributor

Como posso simular um "not in" em um script com arquivo qvd?

Olá Mauro,

Então coloca a forma que você conseguiu fazer ai e marque você mesmo como resposta.

Assim vai ajudar a outras pessoas que estão com dúvida e ganhar uns pontinhos.

Mas principalmente, não fazendo com que pessoas que querem ajudar entrem em tópicos que já estão respondidos.

Não sou moderador, mas já é o 4 tópico que entro hoje para tentar ajudar alguém e já está respondido.

Grande abraço.