xoque 0 Denunciar post Postado Agosto 19, 2015 ola tenho uma tabela chamada pcmov , nela exista 2 tipos de operaçoes as de entrada = E , e as de saida = S . nelas existe o vlsuframa , vlsuframa so é preenchido caso a tabela for de Entrada = E estou com problema no select , pois eu quero puxar apenas as saidas, e a unica coisa que eu queria da entrada , era apenas o vlsuframa. existe alguma soluçao ?segue abaixo o script. SELECT n.NUMNOTA, n.DTENT, n.CODFORNEC, n.FORNECEDOR, (c.NUMNOTA), c.CODPROD, p.DESCRICAO, c.DTMOV, c.CODOPER, c.QT, c.ptabela, c.VLDESCONTO, c.vlsuframa, p.PERICM, c.numregiao, trunc(c.QT * (c.PTABELA - c.VLDESCONTO), 2) AS total, trunc((c.QT * (c.Ptabela -c.vldesconto)) * p.PERICM / 100, 2) AS imposto FROM pcmov c, pcest e, pcnfent n, pcprodut p, pctabtrib t WHERE e.NUMTRANSENTULTENT = n.NUMTRANSENT(+) AND c.CODPROD = p.CODPROD AND e.CODPROD = c.CODPROD AND c.CODPROD = t.CODPROD AND n.especie='NF' AND c.CODFILIAL = e.CODFILIAL AND (c.DTMOV BETWEEN :dtinicial AND :dtfinal AND c.CODFILIAL = 1 and c.numregiao = 1 AND c.CODOPER in ('S') AND c.DTCANCEL IS NULL) GROUP BY n.NUMNOTA, n.DTENT, n.CODFORNEC, n.FORNECEDOR, (c.NUMNOTA), c.CODPROD, p.DESCRICAO, c.QT, c.DTMOV, c.CUSTOULTENT, p.PERCALIQEXT, p.PERCIVA, p.PERCALIQINT, p.PERICM, c.PTABELA, c.VLDESCONTO, codoper, c.VLDESCONTO, c.vlsuframa, p.PERICM, c.numregiao ORDER BY n.DTENT, n.NUMNOTA, n.FORNECEDOR, c.CODPROD Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 20, 2015 Existe algum "relacionamento" entre os registros de entrada e saída ? Compartilhar este post Link para o post Compartilhar em outros sites
xoque 0 Denunciar post Postado Agosto 20, 2015 olha a unica coisa em comum entrada e saida e o codprod . o problema q todos os registro de entrada e saida fica na mesma tabela pcmov. a diferença entre eles e apenas o codigo de operaçao. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 20, 2015 3 soluções me ocorrem. 1) Montar duas sqls , uma para entrada e outra para saída , trata-las como tabelas virtuais e montar um join 2) Montar a coluna da entrada como um subselect 30 fazer uma function que retorne a coluna em questão Compartilhar este post Link para o post Compartilhar em outros sites
xoque 0 Denunciar post Postado Agosto 24, 2015 o meu select de entada e esse SELECT n.NUMNOTA, n.DTENT, n.CODFORNEC, n.FORNECEDOR, c.CODPROD, p.DESCRICAO, c.QT, c.DTMOV, c.ptabela, c.vlsuframa, c.codoper, p.PERICM FROM pcmov c, pcest e, pcnfent n, pcprodut p, pctabtrib t WHERE e.NUMTRANSENTULTENT = n.NUMTRANSENT(+) AND c.CODPROD = p.CODPROD AND e.CODPROD = c.CODPROD AND c.CODPROD = t.CODPROD AND n.especie='NF' AND c.CODFILIAL = e.CODFILIAL AND (c.DTMOV BETWEEN :dtinicial AND :dtfinal AND c.CODOPER = 'E' AND c.DTCANCEL IS NULL) and c.qt > 0 GROUP BY n.NUMNOTA, n.DTENT, n.CODFORNEC, n.FORNECEDOR, c.CODPROD, p.DESCRICAO, c.QT, c.DTMOV, c.CUSTOULTENT, p.PERCALIQEXT, p.PERCIVA, p.PERCALIQINT, p.PERICM, P.PERCCREDICMPRESUMIDO, c.ptabela, c.vlsuframa, c.codoper, p.PERICM ORDER BY n.DTENT, n.NUMNOTA, n.FORNECEDOR, c.CODPROD eu quero pegar o vlsuframa, ptabela, dessa entrada e jogar na sql de saida. Esse SQL de SAIDA SELECT n.NUMNOTA, n.DTENT, n.CODFORNEC, n.FORNECEDOR, c.numnota, c.CODPROD, p.DESCRICAO, c.QT, c.DTMOV, c.ptabela, c.vlsuframa, c.codoper, p.PERICM FROM pcmov c, pcest e, pcnfent n, pcprodut p, pctabtrib t WHERE e.NUMTRANSENTULTENT = n.NUMTRANSENT(+) AND c.CODPROD = p.CODPROD AND e.CODPROD = c.CODPROD AND c.CODPROD = t.CODPROD AND n.especie='NF' AND c.CODFILIAL = e.CODFILIAL AND (c.DTMOV BETWEEN :dtinicial AND :dtfinal AND c.CODOPER = 'S' and c.numregiao = 1 AND c.SITTRIBUT = 41 AND c.DTCANCEL IS NULL) and c.qt > 0 GROUP BY n.NUMNOTA, n.DTENT, n.CODFORNEC, n.FORNECEDOR, c.CODPROD, p.DESCRICAO, c.QT, c.DTMOV, c.CUSTOULTENT, p.PERCALIQEXT, p.PERCIVA, p.PERCALIQINT, p.PERICM, P.PERCCREDICMPRESUMIDO, c.ptabela, c.vlsuframa, c.codoper, p.PERICM, c.numnota ORDER BY n.DTENT, n.NUMNOTA, n.FORNECEDOR, c.CODPROD Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 24, 2015 Cada uma destes selects seria uma "tabela virtual" , a questão seria fazer o join (se é que possível). Compartilhar este post Link para o post Compartilhar em outros sites
xoque 0 Denunciar post Postado Agosto 25, 2015 fiz um join dessa forma abaixo , o problema q ele ta trazendo muita informação que não devia, as que eu preciso ele traz e junta certo, algum jeito de eliminar as outras indevidas, ja tentei algumas , porem sem sucesso?? select distinct e_exportacao.NUMNOTA as NotaEnt, e_exportacao.DTENT, e_exportacao.CODFORNEC, e_exportacao.FORNECEDOR, s_exportacao.NUMNOTASA as NotaSai, s_exportacao.CODPROD, s_exportacao.DESCRICAO, s_exportacao.DTMOV, e_exportacao.PERCSUFRAMA, e_exportacao.PTABELA from s_exportacao inner join e_exportacao on s_exportacao.CODPROD = e_exportacao.CODPROD inner join e_exportacao on s_exportacao.DESCRICAO = e_exportacao.DESCRICAO where s_exportacao.DTMOV BETWEEN :dtinicial AND :dtfinal Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 26, 2015 Pq 2x join na tabela !? Compartilhar este post Link para o post Compartilhar em outros sites
xoque 0 Denunciar post Postado Agosto 26, 2015 Pq 2x join na tabela !? isso foi apenas um teste , mas de qalq forma apennas comparando as tabela de codprod, o resultado e alem da conta Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 26, 2015 Ok , mas : 1) s_exportacao e e_exportacao são views ?! 2) em tese qual seria a chave e a cardinalidade destas tabelas virtuais ? Compartilhar este post Link para o post Compartilhar em outros sites
xoque 0 Denunciar post Postado Agosto 27, 2015 resolvi meu problema com esse select, precisei fazer umas modificações na view de e_exportacao com os filtros correto, agradeço pelas dicas. select distinct e_exportacao.NUMNOTA, s_exportacao.DTENT, s_exportacao.CODFORNEC, s_exportacao.FORNECEDOR, s_exportacao.NUMNOTASA NotaSai, s_exportacao.CODPROD, s_exportacao.DESCRICAO, s_exportacao.QT, s_exportacao.CODOPER, s_exportacao.DTMOV, e_exportacao.PTABELA, e_exportacao.VLDESCONTO, e_exportacao.PERCSUFRAMA, e_exportacao.PERCICM, trunc(s_exportacao.qt * ( e_exportacao.PTABELA - e_exportacao.VLDESCONTO ), 2) AS total , trunc(e_exportacao.percsuframa * ( s_exportacao.QT * e_exportacao.PTABELA )/100, 2) AS ImpostoSuF from s_exportacao inner join e_exportacao on s_exportacao.CODPROD = e_exportacao.CODPROD where e_exportacao.NUMNOTA = s_exportacao.NUMNOTA and s_exportacao.DTMOV BETWEEN :dtinicial AND :dtfinal and s_exportacao.CODOPER = 'S' order by DTENT, NUMNOTA, FORNECEDOR, CODPROD, dtmov Compartilhar este post Link para o post Compartilhar em outros sites