Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JuniorRP

View com union e sub s elect

Recommended Posts

Tem como fazer uma view deste select ?

 

SELECT PRO.PRO_CODIGO, PRO.PRO_DESCRI, PRO.PRO_PRECUS, SUM( DET.FTD_QTDITE ) AS TOTAL, SUM( DET.FTD_QTDITE ) AS MEDIA

FROM FATDET DET, CADPRO PRO, FATGER FTG

WHERE

DET.PRO_CODIGO = PRO.PRO_CODIGO

AND FTG.FTG_CODIGO = DET.FTG_CODIGO

AND FTG.FTG_ESPDOC = DET.FTG_ESPDOC

AND FTG.FIL_CODIGO = DET.FIL_CODIGO

AND FTG.FTG_ESPDOC <> 'OR'

AND FTG.FTG_TIPONF = 'VE'

AND FTG.EXC_DATEXC IS NULL

AND PRO.FOR_CODIGO = '0100000008'

AND FTG.FTG_DATVEN >= '18/03/2010'

GROUP BY PRO.PRO_CODIGO, PRO.PRO_DESCRI, PRO.PRO_PRECUS

 

UNION

 

SELECT PRO.PRO_CODIGO, PRO.PRO_DESCRI, PRO.PRO_PRECUS, 0 AS TOTAL, 0 AS MEDIA

FROM CADPRO PRO, PROSAL SAL

 

WHERE NOT PRO.PRO_CODIGO IN

( SELECT DET.PRO_CODIGO FROM FATDET DET, CADPRO PRO, FATGER FTG

WHERE

DET.PRO_CODIGO = PRO.PRO_CODIGO

AND FTG.FTG_CODIGO = DET.FTG_CODIGO

AND FTG.FTG_ESPDOC = DET.FTG_ESPDOC

AND FTG.FIL_CODIGO = DET.FIL_CODIGO

AND FTG.FTG_ESPDOC <> 'OR'

AND FTG.FTG_TIPONF = 'VE'

AND FTG.EXC_DATEXC IS NULL

AND PRO.FOR_CODIGO = '0100000008'

AND FTG.FTG_DATVEN >= '18/03/2010'

GROUP BY DET.PRO_CODIGO )

AND PRO.PRO_CODIGO = SAL.PRO_CODIGO

AND ( SAL.PRO_CODIGO = 0 OR SAL.PRO_SALDOS < SAL.PRO_SALMIN )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sintaxe básica

 

CREATE OR REPLACE VIEW <NOME> AS
<SELECT ....>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde, isso eu sei ... rssss ... mas nao quero deixar fixo a data nem o codigo do fornecedor, meu problema esta no sub-select.

 

 

Junior

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, view não como ter parametro.

 

Mas se a tabela em questão tiver índices a view "enxerga" estes índices fazendo com que a leitura não fique lenta.

 

Crie a view sem os wheres e faça os filtros no select que sa a view.

 

Uma outra solução é usar um procedure com cursor. mas não sei se funciona no XE.

 

Qual o problema exato ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, o problema exato é pq eu tenho um sub-select dentro da view, e dentro deste sub-select tem que ser o mesmo periodo do select no select antes do union, nao sei ficou claro.

 

 

Jr.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O 1º Select parece ser igual ao subselect já pensou uma maneira de juntá-los ?

 

Parece-me que dá, estou meio enrolado aqui senão matutava alguma coisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.