Esquece o que eu disse. Vou tentar usá-lo aqui e digo se resolveu. Obrigado.
________________________________ De: Pedro de Souza Silva Junior <pedros...@yahoo.com.br> Para: oracle_br@yahoogrupos.com.br Enviadas: Sex, Outubro 23, 2009 9:16:20 AM Assunto: Res: [oracle_br] Ajuda com select Pessoal, primeiramente desculpa pela demora em responder. Olá Evandro, não vi sua alteração tem como me passar aqui pelo grupo? Essa consulta é uma View do banco, sem a coluna STATUS que estou querendo acrescentar ela funciona numa boa. Esta coluna faria seria somente para eu verificar me saldo caso ele fosse igual a zero. Agradeço a ajuda de todos. ____________ _________ _________ __ De: Evandro Giachetto <evandrogiachetto@ gmail.com> Para: oracle...@yahoogrup os.com.br Enviadas: Qui, Outubro 22, 2009 1:06:25 PM Assunto: Re: [oracle_br] Ajuda com select se você usa gmail, clique em - Mostrar texto das mensagens anteriores - para mostrar o que eu alterei em sua query. Att. Evandro Giachetto Oracle Certified Associate evan...@clickintera tiva.com. br 2009/10/22 Evandro Giachetto <evandrogiachetto@ gmail.com> > Estou mandando denovo uma forma na qual seu código pode funcionar pois o > gmail suprime a mensagem que criei anteriormente por conter uma parte do > texto que você digitou. > > Tal qual o jlchiapa explicou, existem algumas regras para utilização de > aliases em expressões. > Dessa forma que você fez, você não conseguiria utilizar o valor de sua > subquery (através de um alias) para uma expressão fora do escopo de sua > subquery. > Uma forma de contornar esse problema (NÃO É A MELHOR FORMA, GARANTO) na > qual você não precise re-escrever sua query inteira é colocá-la dessa forma: > > Assim, você faz o select no resultado de sua query principal, que traz os > valores de suas subquerys como colunas de uma "Tabela virtual". Dessa forma, > você consegue utilizá-las em uma expressão que faz uma consulta à sua > "Tabela virtual"... > > Desculpe a utilização de termos MUITO FÁCEIS como "Tabela Virtual"... rsss > > Segue a query.. acredito que dessa forma você possa obter o resultado > esperado... mas, digo novamente: > NÃO É A MELHOR FORMA DE ESCREVER SUA QUERY... > > Tente re-escrevela colocando as tabelas contidas em sua sub-query no mesmo > join de sua query principal. > > > select a.*, > (a.QUANTIDADEDOCUME NTO - a.QUANTIDADERESERVA ) AS STATUS > from > (SELECT DISTINCT ROM.CODIGOESTABELEC IMENTO, > > EST.NOMEESTABELECIM ENTO, > ROM.CODIGOROMANEIO, > ROM.CODIGOORDEM, > ROM.CODIGODEPOSITAN TE, > > (SELECT DEP.DESCRICAOEMPRES A > FROM EMPRESA DEP > WHERE ROM.CODIGODEPOSITAN TE = DEP.CODIGOEMPRESA) AS DESCRICAODEPOSITANT E, > PRO.CODIGOEMPRESA, > LS.CODIGOPRODUTO, > PRO.DESCRICAOPRODUT O, > PRO.CODIGOGRUPO, > PRO.TIPOPRODUTO, > LS.TIPOUC, > SUM(LS.QUANTIDADEDO CUMENTO) AS QUANTIDADEDOCUMENTO , > LS.CLASSEPRODUTO, > LS.TIPOLOGISTICO, > TL.DESCRICAOTIPOLOG ISTICO, > LS.DADOLOGISTICO, > > (SELECT NVL(SUM(ERE. QUANTIDADERESERV A), 0) > FROM ENDERECORESERVA ERE, > LOTEENTRADASEQUENCI A LES, > COLETORMENSAGEM CMG > WHERE LS.CODIGOMATRIZ = ERE.CODIGOEMPRESA > AND LS.CODIGOPRODUTO = ERE.CODIGOPRODUTO > AND NVL(LS.TIPOLOGISTIC O, -1) = NVL(ERE.LOTELOGISTI COSOLICITADO, -1) > AND NVL(LS.DADOLOGISTIC O, -1) = NVL(ERE.DADOLOGISTI COSOLICITADO, -1) > AND NVL(LS.FILTROLOGIST ICO, -1) = NVL(ERE.FILTROLOGIS TICO, -1) > AND ERE.QUANTIDADERESER VA > 0 > AND ERE.TIPORESERVA = 2 > AND ROM.CODIGOESTABELEC IMENTO = ERE.CODIGOESTABELEC IMENTO > AND ROM.CODIGOORDEM = 71290 --ERE.CODIGOORDEM > AND ERE.CODIGOESTABELEC IMENTO = LES.CODIGOESTABELEC IMENTO > AND ERE.LOTEENTRADA = LES.LOTEENTRADA > AND ERE.LOTEENTRADASEQU ENCIA = LES.LOTEENTRADASEQU ENCIA > AND ((NVL(PRO.EXPEDIRME SMOTIPOUC, 0) = 0) OR > (LES.TIPOUC = DECODE(NVL(PRO. EXPEDIRMESMOTIPO UC, 0), 1, LS.TIPOUC, > LES.TIPOUC)) ) > AND ERE.CODIGOESTABELEC IMENTO = CMG.CODIGOESTABELEC IMENTO > AND ERE.CODIGOMENSAGEM = CMG.CODIGOMENSAGEM > AND CMG.CODIGOTAREFA <> 170 -- REPOSIC?O DE PICKING > ) AS QUANTIDADERESERVA > > FROM ROMANEIO ROM, > ROMANEIODOCUMENTO RDO, > DOCUMENTOSAIDA DS, > LOTESAIDA LS, > PRODUTO PRO, > ESTABELECIMENTO EST, > TIPOLOGISTICO TL > WHERE ROM.CODIGOESTABELEC IMENTO = RDO.CODIGOESTABELEC IMENTO > AND ROM.CODIGOROMANEIO = RDO.CODIGOROMANEIO > AND RDO.CODIGOESTABELEC IMENTO = DS.CODIGOESTABELECI MENTO > AND RDO.CODIGOEMPRESA = DS.CODIGOEMPRESA > AND RDO.TIPODOCUMENTO = DS.TIPODOCUMENTO > AND RDO.SERIEDOCUMENTO = DS.SERIEDOCUMENTO > AND RDO.NUMERODOCUMENTO = DS.DOCUMENTOSAIDA > AND DS.CODIGOESTABELECI MENTO = LS.CODIGOESTABELECI MENTO > AND DS.CODIGOEMPRESA = LS.CODIGOEMPRESA > AND DS.TIPODOCUMENTO = LS.TIPODOCUMENTO > AND DS.SERIEDOCUMENTO = LS.SERIEDOCUMENTO > AND DS.DOCUMENTOSAIDA = LS.DOCUMENTOSAIDA > AND ROM.CODIGOESTABELEC IMENTO = EST.CODIGOESTABELEC IMENTO > AND LS.TIPOLOGISTICO = TL.TIPOLOGISTICO( +) > AND LS.CODIGOMATRIZ = PRO.CODIGOEMPRESA > AND LS.CODIGOPRODUTO = PRO.CODIGOPRODUTO > GROUP BY ROM.CODIGOESTABELEC IMENTO, > EST.NOMEESTABELECIM ENTO, > ROM.CODIGOROMANEIO, > ROM.CODIGOORDEM, > ROM.CODIGODEPOSITAN TE, > PRO.CODIGOEMPRESA, > LS.CODIGOPRODUTO, > PRO.DESCRICAOPRODUT O, > PRO.CODIGOGRUPO, > PRO.TIPOPRODUTO, > LS.TIPOUC, > LS.CLASSEPRODUTO, > LS.TIPOLOGISTICO, > TL.DESCRICAOTIPOLOG ISTICO, > LS.DADOLOGISTICO, > LS.CODIGOMATRIZ, > LS.FILTROLOGISTICO, > ROM.CODIGOORDEM, > PRO.EXPEDIRMESMOTIP OUC)a > > Atenciosamente. > > Evandro Giachetto > Oracle Certified Associate > evan...@clickintera tiva.com. br > > > 2009/10/22 pedrossjr <pedros...@yahoo. com.br> > >> >> >> Pessoal, preciso e de uma ajuda com este select. Estou tomando uma surra. >> Ele funciona, mas precisava acrescentar esta coluna: >> >> ,(QUANTIDADEDOCUMEN TO - QUANTIDADERESERVA) AS STATUS >> acrescentei ela lá em baixo mais ainda não entendi onde stou errando. >> Aguém poderia me ajudar com este select agradeçoa a ajuda. >> >> SELECT DISTINCT ROM.CODIGOESTABELEC IMENTO, >> EST.NOMEESTABELECIM ENTO, >> ROM.CODIGOROMANEIO, >> ROM.CODIGOORDEM, >> ROM.CODIGODEPOSITAN TE, >> >> (SELECT DEP.DESCRICAOEMPRES A >> FROM EMPRESA DEP >> WHERE ROM.CODIGODEPOSITAN TE = DEP.CODIGOEMPRESA) AS DESCRICAODEPOSITANT E, >> PRO.CODIGOEMPRESA, >> LS.CODIGOPRODUTO, >> PRO.DESCRICAOPRODUT O, >> PRO.CODIGOGRUPO, >> PRO.TIPOPRODUTO, >> LS.TIPOUC, >> SUM(LS.QUANTIDADEDO CUMENTO) AS QUANTIDADEDOCUMENTO , >> LS.CLASSEPRODUTO, >> LS.TIPOLOGISTICO, >> TL.DESCRICAOTIPOLOG ISTICO, >> LS.DADOLOGISTICO, >> >> (SELECT NVL(SUM(ERE. QUANTIDADERESERV A), 0) >> FROM ENDERECORESERVA ERE, >> LOTEENTRADASEQUENCI A LES, >> COLETORMENSAGEM CMG >> WHERE LS.CODIGOMATRIZ = ERE.CODIGOEMPRESA >> AND LS.CODIGOPRODUTO = ERE.CODIGOPRODUTO >> AND NVL(LS.TIPOLOGISTIC O, -1) = NVL(ERE.LOTELOGISTI COSOLICITADO, -1) >> AND NVL(LS.DADOLOGISTIC O, -1) = NVL(ERE.DADOLOGISTI COSOLICITADO, -1) >> AND NVL(LS.FILTROLOGIST ICO, -1) = NVL(ERE.FILTROLOGIS TICO, -1) >> AND ERE.QUANTIDADERESER VA > 0 >> AND ERE.TIPORESERVA = 2 >> AND ROM.CODIGOESTABELEC IMENTO = ERE.CODIGOESTABELEC IMENTO >> AND ROM.CODIGOORDEM = 71290 --ERE.CODIGOORDEM >> AND ERE.CODIGOESTABELEC IMENTO = LES.CODIGOESTABELEC IMENTO >> AND ERE.LOTEENTRADA = LES.LOTEENTRADA >> AND ERE.LOTEENTRADASEQU ENCIA = LES.LOTEENTRADASEQU ENCIA >> AND ((NVL(PRO.EXPEDIRME SMOTIPOUC, 0) = 0) OR >> (LES.TIPOUC = DECODE(NVL(PRO. EXPEDIRMESMOTIPO UC, 0), 1, LS.TIPOUC, >> LES.TIPOUC)) ) >> AND ERE.CODIGOESTABELEC IMENTO = CMG.CODIGOESTABELEC IMENTO >> AND ERE.CODIGOMENSAGEM = CMG.CODIGOMENSAGEM >> AND CMG.CODIGOTAREFA <> 170 -- REPOSIC?O DE PICKING >> ) AS QUANTIDADERESERVA >> >> --,(QUANTIDADEDOCUM ENTO - QUANTIDADERESERVA) AS STATUS >> >> FROM ROMANEIO ROM, >> ROMANEIODOCUMENTO RDO, >> DOCUMENTOSAIDA DS, >> LOTESAIDA LS, >> PRODUTO PRO, >> ESTABELECIMENTO EST, >> TIPOLOGISTICO TL >> WHERE ROM.CODIGOESTABELEC IMENTO = RDO.CODIGOESTABELEC IMENTO >> AND ROM.CODIGOROMANEIO = RDO.CODIGOROMANEIO >> AND RDO.CODIGOESTABELEC IMENTO = DS.CODIGOESTABELECI MENTO >> AND RDO.CODIGOEMPRESA = DS.CODIGOEMPRESA >> AND RDO.TIPODOCUMENTO = DS.TIPODOCUMENTO >> AND RDO.SERIEDOCUMENTO = DS.SERIEDOCUMENTO >> AND RDO.NUMERODOCUMENTO = DS.DOCUMENTOSAIDA >> AND DS.CODIGOESTABELECI MENTO = LS.CODIGOESTABELECI MENTO >> AND DS.CODIGOEMPRESA = LS.CODIGOEMPRESA >> AND DS.TIPODOCUMENTO = LS.TIPODOCUMENTO >> AND DS.SERIEDOCUMENTO = LS.SERIEDOCUMENTO >> AND DS.DOCUMENTOSAIDA = LS.DOCUMENTOSAIDA >> AND ROM.CODIGOESTABELEC IMENTO = EST.CODIGOESTABELEC IMENTO >> AND LS.TIPOLOGISTICO = TL.TIPOLOGISTICO( +) >> AND LS.CODIGOMATRIZ = PRO.CODIGOEMPRESA >> AND LS.CODIGOPRODUTO = PRO.CODIGOPRODUTO >> GROUP BY ROM.CODIGOESTABELEC IMENTO, >> EST.NOMEESTABELECIM ENTO, >> ROM.CODIGOROMANEIO, >> ROM.CODIGOORDEM, >> ROM.CODIGODEPOSITAN TE, >> PRO.CODIGOEMPRESA, >> LS.CODIGOPRODUTO, >> PRO.DESCRICAOPRODUT O, >> PRO.CODIGOGRUPO, >> PRO.TIPOPRODUTO, >> LS.TIPOUC, >> LS.CLASSEPRODUTO, >> LS.TIPOLOGISTICO, >> TL.DESCRICAOTIPOLOG ISTICO, >> LS.DADOLOGISTICO, >> LS.CODIGOMATRIZ, >> LS.FILTROLOGISTICO, >> ROM.CODIGOORDEM, >> PRO.EXPEDIRMESMOTIP OUC >> >> >> > > [As partes desta mensagem que não continham texto foram removidas] ____________ _________ _________ _________ _________ _________ _ Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbusca dos.yahoo. com [As partes desta mensagem que não continham texto foram removidas] ____________________________________________________________________________________ Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas]