Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal,
Saberiam me dizer se tem como pegar somente o primeiro registro de uma tabela no script, exemplo:
Cliente ID Controle
100 0101101
100 0101102
200 0201101
200 0201102
Seguindo o exemplo acima precisaria dos itens 0101101 para o Cliente 100 e 0201101 para o Cliente 200. Saberiam me dizer se há esta possibilidade?
Abraço,
Rafael
Hum... entendi.
Tem uma outra opção.
Teste:
LOAD * Inline [
Cliente ID, Controle
100, 0101101
100, 0101102
200, 0201101
200, 0201102
];
Inicial:
LOAD
RecNo() as Sequencial,
[Cliente ID],
Controle
Resident Teste;
DROP Table Teste;
Final:
LOAD
'1' as x,
[Cliente ID],
Min(Controle) as Controle,
Min(Sequencial) as Sequencial
Resident Inicial
Group By
[Cliente ID];
DROP Table Inicial;
DROP Field x From Final;
Perceba que eu continuo usando o Min() no Controle, mas se for telefone e esse valor for igual para o cliente você pode usar a função Only() no lugar.
Abs
Boa tarde Rafael,
Tem como sim. Primeiro você deve entender qual o padrão das cargas e registros nesta tabela. No seu exemplo postado pelo que percebi os registros seguem uma ordem numérica, certo?
No exemplo 01, 02 e assim por diante.
Basta você filtrar na tabela de Clientes apenas os com final de controle 01, caso não seja necessário os demais registros. Assim você deve carregar apenas os registros 01, que significaria o primeiro registro.
Att,
João Carlos Ferreira.
João,
Obrigado pelo retorno, contudo, o exemplo que dei foi apenas esporádico. A base que eu preciso não um lógica, já que são telefones de Clientes. A ideia seria verificar se existe alguma fórmula que faça a leitura e agregação aos determinados clientes através do primeiro número localizado.
Abraço,
Rafael
Boa tarde Rafael. Veja se este exemplo lhe atende. Basicamente estou agrupando o valor do Cliente ID e pegando apenas o valor mínimo de controle.
Abs.
Rapha, boa tarde!
Infelizmente não tenho como abrir qvw. Poderia adicionar o script no corpo da mensagem?
Abraço,
Rafael
Claro.
Bom, o script é in line, por isso tive que fazer dois loads. Mas depois você ajusta a sua realidade:
Teste:
LOAD * Inline [
Cliente ID, Controle
100, 0101101
100, 0101102
200, 0201101
200, 0201102
];
Final:
LOAD
[Cliente ID],
Min(Controle) as Controle
Resident Teste
Group By
[Cliente ID];
DROP Table Teste;
DROP Field x From Final;
Opa, obrigado!
Mas pelo que entendi você pegou o menor dado. Contudo, como aplicação real estou analisando número de telefones, ou seja, nem sempre o menor número será o primeiro registro.
Da maneira acima eu conseguiria contornar esta situação ou seria necessário outra ação?
Abraço!
Rafael
Hum... entendi.
Tem uma outra opção.
Teste:
LOAD * Inline [
Cliente ID, Controle
100, 0101101
100, 0101102
200, 0201101
200, 0201102
];
Inicial:
LOAD
RecNo() as Sequencial,
[Cliente ID],
Controle
Resident Teste;
DROP Table Teste;
Final:
LOAD
'1' as x,
[Cliente ID],
Min(Controle) as Controle,
Min(Sequencial) as Sequencial
Resident Inicial
Group By
[Cliente ID];
DROP Table Inicial;
DROP Field x From Final;
Perceba que eu continuo usando o Min() no Controle, mas se for telefone e esse valor for igual para o cliente você pode usar a função Only() no lugar.
Abs
Já conseguiu a resposta? Se sim, escolha uma e marque como "Correta" para fechar o tópico e nos ajudar a manter a comunidade organizada
Have fun, be Qlik