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]

Responder a