Hebert Canto Postado 13 de Janeiro de 2011 Tópicos Que Criei: 8 Tópicos/Dia: 0.00 Meu Conteúdo: 38 Conteúdo/Dia: 0.01 Reputação: 2 Pontos/Conquistas: 272 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 47 Denunciar Compartilhar Postado 13 de Janeiro de 2011 Olá Pessoal, bom tarde !!!! Preciso fazer um relatório onde apartir de um movimento eu busque as informações do movimento de origem. Estou utilizando a tabela TMOVRELAC, mas quando coloco os itens as informações aparecem em duplicidade. No movimento de origem a única informação que preciso é o número do movimento. Se alguém puder me ajudar fico muito agradecido. Abaixo coloco a sentença que criei: SELECT DISTINCT TMOV.IDMOV ,TMOV.NUMEROMOV ,TMOV.DATAEMISSAO ,TITMMOV.IDPRD ,TITMMOV.QUANTIDADE ,SF.NUMEROMOV 'N. SF ORIGEM' FROM TMOV INNER JOIN TITMMOV ON TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA AND TITMMOV.IDMOV = TMOV.IDMOV INNER JOIN TMOVRELAC ON TMOVRELAC.CODCOLORIGEM = TMOV.CODCOLIGADA AND TMOVRELAC.IDMOVDESTINO = TMOV.IDMOV LEFT JOIN (SELECT DISTINCT TMOV.IDMOV ,TMOV.NUMEROMOV ,FCFO.NOMEFANTASIA FROM TMOV INNER JOIN FCFO ON FCFO.CODCOLIGADA = TMOV.CODCOLIGADA AND FCFO.CODCFO = TMOV.CODCFO) SF ON TMOVRELAC.IDMOVORIGEM = SF.IDMOV WHERE TMOV.DATAEMISSAO >= '01/01/2011' AND TMOV.DATAEMISSAO <= '13/01/2011' AND TMOV.CODTMV = '1.2.19' Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Nik Postado 14 de Janeiro de 2011 Tópicos Que Criei: 101 Tópicos/Dia: 0.02 Meu Conteúdo: 456 Conteúdo/Dia: 0.08 Reputação: 0 Pontos/Conquistas: 3.290 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 49 Denunciar Compartilhar Postado 14 de Janeiro de 2011 Tente assim NIK ----- SELECT DISTINCT TMOV.IDMOV ,TMOV.NUMEROMOV ,TMOV.DATAEMISSAO ,TITMMOV.IDPRD ,TITMMOV.QUANTIDADE ,SF.NUMEROMOV 'N. SF ORIGEM' FROM TMOV INNER JOIN TITMMOV ON TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA AND TITMMOV.IDMOV = TMOV.IDMOV INNER JOIN TMOVRELAC ON TMOVRELAC.CODCOLORIGEM = TMOV.CODCOLIGADA AND TMOVRELAC.IDMOVDESTINO (ERRADO) TMOVRELAC.IDMOVORIGEM = TMOV.IDMOV LEFT JOIN (SELECT DISTINCT TMOV.IDMOV ,TMOV.NUMEROMOV ,FCFO.NOMEFANTASIA FROM TMOV INNER JOIN FCFO ON FCFO.CODCOLIGADA = TMOV.CODCOLIGADA AND FCFO.CODCFO = TMOV.CODCFO) SF ON TMOVRELAC.IDMOVORIGEM = SF.IDMOV WHERE TMOV.DATAEMISSAO >= '01/01/2011' AND TMOV.DATAEMISSAO <= '13/01/2011' AND TMOV.CODTMV = '1.2.19' Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Hebert Canto Postado 14 de Janeiro de 2011 Tópicos Que Criei: 8 Tópicos/Dia: 0.00 Meu Conteúdo: 38 Conteúdo/Dia: 0.01 Reputação: 2 Pontos/Conquistas: 272 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 47 Autor Denunciar Compartilhar Postado 14 de Janeiro de 2011 Tente assimNIK ----- SELECT DISTINCT TMOV.IDMOV ,TMOV.NUMEROMOV ,TMOV.DATAEMISSAO ,TITMMOV.IDPRD ,TITMMOV.QUANTIDADE ,SF.NUMEROMOV 'N. SF ORIGEM' FROM TMOV INNER JOIN TITMMOV ON TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA AND TITMMOV.IDMOV = TMOV.IDMOV INNER JOIN TMOVRELAC ON TMOVRELAC.CODCOLORIGEM = TMOV.CODCOLIGADA AND TMOVRELAC.IDMOVDESTINO (ERRADO) TMOVRELAC.IDMOVORIGEM = TMOV.IDMOV LEFT JOIN (SELECT DISTINCT TMOV.IDMOV ,TMOV.NUMEROMOV ,FCFO.NOMEFANTASIA FROM TMOV INNER JOIN FCFO ON FCFO.CODCOLIGADA = TMOV.CODCOLIGADA AND FCFO.CODCFO = TMOV.CODCFO) SF ON TMOVRELAC.IDMOVORIGEM = SF.IDMOV WHERE TMOV.DATAEMISSAO >= '01/01/2011' AND TMOV.DATAEMISSAO <= '13/01/2011' AND TMOV.CODTMV = '1.2.19' NIK, Tentei conforme você sugeriu e não trouxe nenhum resultado. A consulta parte de um movimento de destino, '1.2.19', e eu preciso buscar na origem o número do movimento. Na verdade este movimento '1.2.19', de destino, é gerado pelo movimento '1.1.04', origem, através de faturamento e neste processo eu posso estar escolhendo mais de um registro para faturar, mas sem agrupar os itens. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Nik Postado 14 de Janeiro de 2011 Tópicos Que Criei: 101 Tópicos/Dia: 0.02 Meu Conteúdo: 456 Conteúdo/Dia: 0.08 Reputação: 0 Pontos/Conquistas: 3.290 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 49 Denunciar Compartilhar Postado 14 de Janeiro de 2011 VEJA... NIK -------- SELECT A.ORIGEM, NUMORIGEM, EMORIGEM, IDPRD, QUANTIDADE --,SF.NUMEROMOV 'N. SF ORIGEM' FROM (SELECT TMOV.CODCOLIGADA, TMOV.CODCFO, TMOV.IDMOV ORIGEM,TMOV.NUMEROMOV NUMORIGEM,TMOV.DATAEMISSAO EMORIGEM, A.IDMOV DESTINO ,A.NUMEROMOV NUMDESTINO ,A.DATAEMISSAO EMDESTINO FROM TMOV INNER JOIN TMOVRELAC ON TMOVRELAC.CODCOLORIGEM = TMOV.CODCOLIGADA AND TMOVRELAC.IDMOVORIGEM = TMOV.IDMOV INNER JOIN TMOV A ON TMOVRELAC.CODCOLDESTINO = A.CODCOLIGADA AND TMOVRELAC.IDMOVDESTINO = A.IDMOV /* LEFT JOIN (SELECT DISTINCT TMOV.IDMOV ,TMOV.NUMEROMOV ,FCFO.NOMEFANTASIA FROM TMOV INNER JOIN FCFO ON FCFO.CODCOLIGADA = TMOV.CODCOLIGADA AND FCFO.CODCFO = TMOV.CODCFO) SF ON TMOVRELAC.IDMOVORIGEM = SF.IDMOV */ WHERE A.DATAEMISSAO >= '01/01/2011' AND A.DATAEMISSAO <= '01/13/2011' AND A.CODTMV = '1.2.19')A INNER JOIN TITMMOV B ON A.CODCOLIGADA = B.CODCOLIGADA AND A.ORIGEM = B.IDMOV INNER JOIN FCFO C ON A.CODCOLIGADA = C.CODCOLIGADA AND A.CODCFO = C.CODCFO Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Emmanoel Antunes Sil Postado 14 de Janeiro de 2011 Tópicos Que Criei: 7 Tópicos/Dia: 0.00 Meu Conteúdo: 28 Conteúdo/Dia: 0.01 Reputação: 0 Pontos/Conquistas: 211 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Denunciar Compartilhar Postado 14 de Janeiro de 2011 Cara testei assim e funcionou aqui o problema da no inner join SELECT DISTINCT TMOV.IDMOV ,TMOV.NUMEROMOV ,TMOV.DATAEMISSAO ,TITMMOV.IDPRD ,TITMMOV.QUANTIDADE ,TMOVRELAC.IDMOVORIGEM ,SF.NUMEROMOV 'N. SF ORIGEM' FROM TMOV INNER JOIN TITMMOV ON TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA AND TITMMOV.IDMOV = TMOV.IDMOV INNER JOIN TMOVRELAC ON TMOVRELAC.CODCOLDESTINO = TMOV.CODCOLIGADA AND TMOVRELAC.CODCOLORIGEM = TMOV.CODCOLIGADA AND TMOVRELAC.IDMOVDESTINO = TMOV.IDMOV LEFT JOIN (SELECT DISTINCT TMOV.IDMOV ,TMOV.NUMEROMOV ,FCFO.NOMEFANTASIA FROM TMOV INNER JOIN FCFO ON FCFO.CODCOLIGADA = TMOV.CODCOLIGADA AND FCFO.CODCFO = TMOV.CODCFO) SF on TMOVRELAC.IDMOVORIGEM = SF.IDMOV WHERE TMOV.IDMOV = 29038 Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Hebert Canto Postado 17 de Janeiro de 2011 Tópicos Que Criei: 8 Tópicos/Dia: 0.00 Meu Conteúdo: 38 Conteúdo/Dia: 0.01 Reputação: 2 Pontos/Conquistas: 272 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 47 Autor Denunciar Compartilhar Postado 17 de Janeiro de 2011 Prezado Nik, Testei e verifiquei a última sugestão sua, só que o INNER JOIN TITMMOV B, ele está trazendo todos os itens do movimento de origem, e ocorre situações aqui em que o movimento é desdobrado, tentei altera-lo para trazer os itens de destino, mas mesmo assim ele duplica as informações. Quando há mais de um movimento de origem. Voltei a situação anterior, onde o sistema apresenta todos os itens do movimento de origem, daí quebrei um pouco minha cabeça pensando como poderia fazer utilizando os itens do movimento de origem, consegui o resultado que eu precisava utilizando um filtro no final da sentença, onde apresentasse apenas os itens em que a "quantidadeareceber < quantidade" e na apresentação do resultado eu faço "quantidade - quantidadeareceber", pois assim eu tenho a quantidade que foi faturado. Cara deu certinho e o relatório já está pronto. Te agradeço pela ajuda que foi de grande valia. Quero agradecer também ao Emmanoel Antunes que deu uma força também. Obrigado a todos, assunto encerrado. segue como ficou a sentença, caso alguém precise: SELECT A.ORIGEM , A.NUMORIGEM , A.EMORIGEM , A.DESTINO , A.NUMDESTINO , A.EMDESTINO , PRD.CODIGOREDUZIDO , (B.QUANTIDADE - B.QUANTIDADEARECEBER) QTDEFAT FROM (SELECT distinct TMOV.CODCOLIGADA , TMOV.CODCFO , TMOV.IDMOV ORIGEM , TMOV.NUMEROMOV NUMORIGEM , TMOV.DATAEMISSAO EMORIGEM , A.IDMOV DESTINO , A.NUMEROMOV NUMDESTINO , A.DATAEMISSAO EMDESTINO FROM TMOV INNER JOIN TMOVRELAC ON TMOVRELAC.CODCOLORIGEM = TMOV.CODCOLIGADA AND TMOVRELAC.IDMOVORIGEM = TMOV.IDMOV INNER JOIN TMOV A ON TMOVRELAC.CODCOLDESTINO = A.CODCOLIGADA AND TMOVRELAC.IDMOVDESTINO = A.IDMOV WHERE A.DATAEMISSAO = '06/01/2011' AND A.CODTMV = '1.2.19')A INNER JOIN TITMMOV B ON A.CODCOLIGADA = B.CODCOLIGADA AND A.ORIGEM = B.IDMOV INNER JOIN TPRD PRD ON B.CODCOLIGADA = PRD.CODCOLIGADA AND B.IDPRD = PRD.IDPRD LEFT JOIN TPRDCOMPL ON PRD.CODCOLIGADA = TPRDCOMPL.CODCOLIGADA AND PRD.IDPRD = TPRDCOMPL.IDPRD INNER JOIN FCFO C ON A.CODCOLIGADA = C.CODCOLIGADA AND A.CODCFO = C.CODCFO WHERE (QUANTIDADEARECEBER < QUANTIDADE) ORDER BY NUMDESTINO Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Participe da conversa
Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.