[firebase-br] Campo Calculado em Select

Edson T. Marques marques em oriontec.com.br
Sex Fev 4 14:30:12 -03 2005


O seguinte...

Se eu tivesse um problema desses e com uma consulta dessas eu criaria um
stored procedure.
Já fizemos umas incursões nesse sentido aqui (igual a sua dúvida) e, das
duas uma, ou violavamos alguma regra do SQL do FB e não chegavamos em 
nada ou complicavamos demais a consulta (dificultando as manutenções),
eventualmente o programa perdia a conexão com o banco.

Tinhamos consultas complicadas assim para gerar os Registros do Arquivo
Fiscal Magnético e transformamos tudo em stored procedures. Foi a melhor
coisa que fizemos!

É isso aí.
[]'s
Edson

RAMJ SISTEMAS & CONSULTORIA escreveu:

>Tenho a seguinte instrucao Sql
>
>SELECT E.CODPROD
>     , E.DESCPROD
>     , CASE
>          WHEN E.TIPO = 'J' THEN 'JÓIA'
>          WHEN E.TIPO = 'B' THEN 'BIJUTERIA'
>       END AS DESCTIPO
>     , E.MATPRIMA
>     , CASE
>          WHEN E.MATPRIMA = 'M' THEN 'MATÉRIA-PRIMA'
>          WHEN E.MATPRIMA = 'F' THEN 'PRODUTO FINAL'
>       END AS DESCMATPRIMA
>     , E.CODBARRA
>     , E.PESO
>     , E.MARGEM
>     , E.CUSTO
>     , E.PRECO01
>     , E.PRECO02
>     , E.FOTO
>     , E.CODCOLECAO
>     , A.DESCCOLECAO
>     , E.CODGRUPO
>     , B.DESCGRUPO
>     , E.TIPO
>     , C.DATAOCORR
>     , CASE
>          WHEN E.TIPO = 'J' THEN
>(((C.VLROURO/1000)*(B.FATORBANHO+B.FATORSERVICO)+E.CUSTO)*E.PESO)
>       END AS CUSTOOURO
>     , CASE
>          WHEN E.TIPO = 'J' THEN
>((((C.VLROURO/1000)*(B.FATORBANHO+B.FATORSERVICO)+E.CUSTO)*E.PESO)*(E.MARGEM
>/100))+
> 
>(((C.VLROURO/1000)*(B.FATORBANHO+B.FATORSERVICO)+E.CUSTO)*E.PESO)
>       END AS PRECOOURO
>     , CASE
>          WHEN E.TIPO = 'J' THEN
>(((C.VLRPRATA/1000)*(B.FATORBANHO+B.FATORSERVICO)+E.CUSTO)*E.PESO)
>       END AS CUSTOPRATA
>     , CASE
>          WHEN E.TIPO = 'J' THEN
>((((C.VLRPRATA/1000)*(B.FATORBANHO+B.FATORSERVICO)+E.CUSTO)*E.PESO)*(E.MARGE
>M/100))+
> 
>(((C.VLRPRATA/1000)*(B.FATORBANHO+B.FATORSERVICO)+E.CUSTO)*E.PESO)
>       END AS PRECOPRATA
>FROM PRODUTOS E
>LEFT JOIN COLECAO A ON (A.CODCOLECAO = E.CODCOLECAO)
>LEFT JOIN GRUPOS B ON (B.CODGRUPO = E.CODGRUPO)
>LEFT JOIN PRECOBANHO C ON (C.DATAOCORR = DATAOCORR)
>
>Duas Perguntas: 1-> usando o CASE criei um campo chamado CUSTOURO. Como usar
>este campo no case abaixo PRECOOURO. Gostaria que ficasse algo assim: ( se
>for possível é claro )
>     , CASE
>          WHEN E.TIPO = 'J' THEN (CUSTOOURO*(E.MARGEM/100))+CUSTOOURO   
>       END AS PRECOOURO
>
>2->Na linha C.DATAOCORR, preciso rotarnar a data maior algo assim:
>     , MAX(C.DATAOCORR)
>
>Se alguém puder me ajudar, desde já agradeço
>
>Reuber
>
>
>
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>
>  
>






Mais detalhes sobre a lista de discussão lista