Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Olá, boa tarde!
Pessoal, tenho duas tabelas Pedido, que armazena a informação de pedido e Faturamento, que armazena as informaçoes de faturamento,
ambas por período, representante e familia de produto.
A minha dúvida é a seguinte:
1) uni as duas tabelas criando um chave por periodo e familia de produto;
2) Criei duas tabelas (grafico) uma demonstrando os pedidos e outra o faturamento por familia de produto.
3) Quando fui validar os dados encontrei uma diferença entre o valor que eu tinha no meu SELECT para um determinado periodo e o que mostrava na tabela (grafico de faturamento),
O que percebi é que na tabela de faturamento ele só me mostrou as familias de produto que existem na tabela PEDIDOS, e acontece que em determinado periodo eu tenho faturamento de determinada familia, mas para aquele periodo não tenho pedidos para aquela familia
Daí pergunto, Como eu posso tratar para mostrar todas as familias de produtos?
Como eu trato o script para fazer isso?
Desde já agradeço a atenção e ajuda,
Segue print e script em anexo.
Abs,
Juliana.
Acredito que isso acontece pelo uso do left join ... ele pega somente as familias que estão na primeira tabela...
Se eu não me engano o que você teria que utilizar seria outer join ... que pega a familia das 2 tabelas...
Olá Rodrigo,
Você diz o LEFT que uso em relação a tabela FAMILIA_PRODUTO em cada uma das tabelas PEDIDO_HISTORICO e FATURAMENTO_LIQUIDO?
Você chegou a ver o script das tabelas que eu mandei? será que ali não tem alguma inconsistência?
Até mudei isso para outer join, mas não influenciou em nada.
Desde já agradeço a ajuda
Abs,
Juliana Holstein.
Boa Tarde Juliana,
Ja passei por este mesmo problema.
Acontece que quando você deve inserir pelo menos um registro para esta informação, ou seja, completar a tabela faturamento.
Uma forma de você alimentar estar informações é criando uma tabela auxiliar com os valores zerados e em seguida concatenar com a tabela principal afim de mostrar todos os valores.
Segue um pequeno exemplo do que mencionei acima.
Olá Eduardo, boa tarde!
Na verdade eu teria que tratar a minha tabela de pedidos né? Porque tenho familias de produtos na minha tabela faturamento e não na pedido para aquele periodo.
Neste exemplo que você me mandou, eu preciso tratar todos os campos que tenho na minha tabela pedido?
Ou por exemplo, só trato data e a familia do produto e seu respectivo valor, que neste caso será zero.
O que você me indica?
Desde já agradeço sua ajuda.
Abs,
Juliana
Ola Juliana,
Neste caso eu verificaria qual é o menor e o maior período de cada tabela e geraria esta tabela auxiliar levando em consideração as duas tabelas.
O tratamento também deveria ser realizado na tabela de pedido e na de faturamento, pois neste exemplo que você mencionou, ocorreu de não existir pedidos, mas acredito que poderia ocorrer o inverso também não?
No seu caso, deveria tratar todos os campos da sua tabela, uma tabela somente com a data e a outra com os demais campos (exluindo as colunas de valores) no meu exemplo utilizei um exemplo pequeno mas poderia existir mais campos.
Fica dificil tentar resolver sem um exemplo, mas se você conseguir o que esta ocorrendo e compreender a logica da solução que propuz acho que consegue resolver esta questão.
Abraços
Olá Eduardo,
Preciso muito de sua ajuda, não estou conseguindo fazer o tratamento na tabela de historico de pedidos para mostrar todas as familias de produto por dia.
Em anexo eu tenho o script do load que faço das duas tabelas FAMIILIA / HISTORICO_PEDIDO.
Na historico de pedido tenho o campo data_carteira, que é o campo que utilizo para gerar a tabela de datas como no seu exemplo, e crio uma tabela familia, que é o grupo do seu exemplo.
Até a união destas duas tabelas familia e data, funciona certinho.
Porém quando vou unir esta tabela que criei com a tabela HISTORICO_PEDIDO, ele não traz mas as familias que não existem na tabela HISTORICO_PEDIDO e que existem na minha tabela que criei com os valores zerados.
podes me dar um help?
Desde já agradeço,
Juliana.
Eduardo,
Complementando o histórico anterior:
Até esta parte aqui está ok:
TABELA_FAMILIA:
LOAD DISTINCT CD_FAMILIA AS TAB_COD_FAMILIA
FROM C:\Qlikview\Producao\QVD\FAMILIA_PRODUTO.qvd (qvd);
TABELA_DATA:
NOCONCATENATE
LOAD DISTINCT DATA_CARTEIRA AS TAB_DATA_DT_CARTEIRA
FROM C:\Qlikview\Producao\QVD\HISTORICO_PEDIDO.qvd (qvd);
TABELA_TRATAR_VALOR_ZERO:
NOCONCATENATE
LOAD TAB_COD_FAMILIA,
0 AS VALOR
RESIDENT TABELA_FAMILIA;
TABELA_DATA:
JOIN (TABELA_TRATAR_VALOR_ZERO)
LOAD TAB_DATA_DT_CARTEIRA
RESIDENT TABELA_DATA;
DROP TABLES TABELA_DATA, TABELA_FAMILIA;
Ele gera a tabela com todas as datas e familia por dia, mas agora preciso fazer o union com a tabela HISTORICO_PEDIDO, que está no arquivo em anexo anterior, mas daí não funciona.
Creio também que na tabela sem valor quando leio a familia e crio um campo valor zerado, tenho que ler todos os campos da tabela HISTORICO_PEDIDO e zera-los ne?
Obrigada,
Juliana.
Bom Dia Juliana tudo bom?
Tente fazer um CONCATENATE entre as tabelas TABELA_TRATAR_VALOR_ZERO e PEDIDO_HISTORICO deixando ambas com a mesma quantidade de colunas.
Neste caso a TABELA_TRATAR_VALOR_ZERO deve ser complementada com colunas de valores nulos.
OBS.: realize o concatenate primeiro nas informações brutas do qvd ("HISTORICO_PEDIDO.qvd") e depois faça o tratamento para gerar a tabela "PEDIDO_HISTORICO".