Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Estou com uma grande dificuldade de entender como funciona a extração de dados Oracle para Qlikview.
Exemplo:
Tabela: PEDIDOS
Contem o cabeçalho de pedido.
Tabela:PEDIDO-ITENS
Contém o cabeçalho de itens do pedido.
Eu gostaria de uma solução para extrair os dados da tabela PEDIDO-ITENS limitando por período.
Com a tabela PEDIDOS funciona perfeito.
Veja como estou fazendo o meu script:
PEDIDOS:
LOAD
NUMEROPEDIDO
Date(DATAPEDIDO, 'DD/MM/YYYY') AS DATAPEDIDO,
VALORPEDIDO;
SQL SELECT
NUMEROPEDIDO
DATAPEDIDO
VALORPEDIDO
FROM PEDIDOS WHERE DATAPEDIDO >= '01/02/2017' ;
PEDIDO-ITENS:
LOAD
NUMEROPEDIDO
CODIGO,
QTD,
VALORITEM;
SQL SELECT
NUMEROPEDIDO
CODIGO,
QTD,
VALORITEM;
FROM PEDIDOS P
INNER JOIN PEDIDO-ITENS I ON (I.NUMEROPEDIDO = P.NUMEROPEDIDO AND P.DATAPEDIDO >= '01/02/2017' );
O grande problema é que o Qlikview parece não entender essa condição do periodo na PEDIDO-ITENS, e com isso está extraindo TODOS os registros da tabela PEDIDO-ITENS.
Eu queria extrair apenas os registros do periodo informado.
Como faço?
Funcionou dessa forma:
WHERE DATAPEDIDO >= TO_DATE('00-00-0000','DD-MM-YYYY');
Bom dia Márcio
Não uso o SQL ANSI normalmente, então não consigo te responder o motivo de não estar funcionando.
O que posso é sugerir a solução para o SQL Oracle
SELECT | i.* | |
FROM | Pedidos P, | |
PEDIDO-ITENS i |
Where i.numeropedido = p.numeropedido
and | P.DATAPEDIDO >= '01/02/2017' |
Marcio,
para o Oracle normalmente eu uso o seguinte where no SQL
where "PLO_DATA" > To_DATE('31/12/2013', 'dd/mm/yyyy')
O grande problema é que o Qlikview não entende o WHERE
parece que ele está ignorando o WHERE
Marcio,
Já verificou o formato do campo data? Verifica se o formato data não está em YYYY/MM/DD
Obs: O seu script da tabela [PEDIDO-ITENS] está com pequenos erros:
[PEDIDO-ITENS]:
LOAD
NUMEROPEDIDO,
CODIGO,
QTD,
VALORITEM;
SQL SELECT
NUMEROPEDIDO
CODIGO,
QTD,
VALORITEM
FROM PEDIDOS P
INNER JOIN PEDIDO-ITENS I ON (I.NUMEROPEDIDO = P.NUMEROPEDIDO AND P.DATAPEDIDO >= '01/02/2017' );
Marcio,
Conforme o seu script o mesmo será executado no seu SGBD, ou seja, o QlikView enviará o script (SQL) para o seu SGBD executar.
O QlikView não trata o "WHERE", essa query é entregue ao SGBD que retorna linhas, provavelmente você está passando a data em um formato que o BANCO não entende
talvez seu select esteja mal formado, acredito que o correto seja
SELECT
NUMEROPEDIDO
CODIGO,
QTD,
VALORITEM;
FROM PEDIDOS P
INNER JOIN PEDIDO-ITENS I ON (I.NUMEROPEDIDO = P.NUMEROPEDIDO)
WHERE P.DATAPEDIDO >= to_DATE('01/02/2017' ,'DD/MM/YYYY')
Bom Dia Marcio, no Oracle depende um pouco no NLS_LANG configurado, muitas vezes ao passar parâmetros de data passa assim
SELECT
NUMEROPEDIDO
CODIGO,
QTD,
VALORITEM
FROM PEDIDOS P
INNER JOIN PEDIDO-ITENS I
ON (I.NUMEROPEDIDO = P.NUMEROPEDIDO
AND P.DATAPEDIDO >= '01-Feb-2017'
Veja o detalhe do Mês.
Bom dia Marcio
O seu problema foi resolvido? Se sim, marque as respostas úteis/corretas para fechar o tópico.
Obrigado
Já achou uma solução? Se sim e alguma das resposta te ajudou, marque-a como "Correta" para fechar o tópico.