[firebase-br] Problemas com CTE no View

Carlos H. Cantu listas em warmboot.com.br
Seg Jun 13 15:19:39 -03 2011


Fabiano,

Sugiro que vc poste no tracker do firebird um "zip" contendo um
pequeno banco de dados, e a view demonstrando o problema.

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

FM> *Boa tarde!*

FM>   Tenho um CTE e criei uma view, utilizando ela, porém a view, não me mostra
FM> os resultados de algumas colunas do tipo numeric, mas se eu executar a mesma
FM> CTE fora da view, o resultado mostra todos os valores da coluna! Já mudei o
FM> CTE, só para teste e o resultado é o mesmo!

FM> O código da view é:

FM> *create view VW_PEDIDOXENTREGA (*
FM> *    PEDIDO,*
FM> *    CODIGO_FORNECEDOR,*
FM> *    FORNECEDOR,*
FM> *    DOC_SAF,*
FM> *    CODIGO_PRODUTO,*
FM> *    QTDE_PEDIDO,*
FM> *    UNID_MED,*
FM> *    QTDE_ENTREGUE)*
FM> *as*
FM> *with CTE_ESTORNO (DOCUMENTO)*
FM> *as (select DOCUMENTO_ESTORNO*
FM> *    from ESTORNO_NOTA_FISCAL*
FM> *    where EXCLUIR <> 'S'),*
FM> *CTE_COMPRA_TBREQUISICAO(DOCUMENTO, PEDIDO, CODIGO_FORNECEDOR) as (*
FM> *select R.DOCUMENTO, R.PEDIDO, R.ORIGEM_MOVIMENTO*
FM> *from REQUISICAO R*
FM> *where R.EXCLUIR <> 'S' and*
FM> *      R.TIPO_REQUISICAO = 'CO' and*
FM> *      R.PEDIDO is not null and*
FM> *      R.PEDIDO <> '0' and*
FM> *      R.DOCUMENTO not in (select DOCUMENTO*
FM> *                          from CTE_ESTORNO)*
FM> *group by R.DOCUMENTO, R.PEDIDO, R.ORIGEM_MOVIMENTO*
FM> *order by R.PEDIDO desc, R.DOCUMENTO desc),*
FM> *CTE_COMPRA_TBMOVIMENTO(DOCUMENTO, PEDIDO, CODIGO_FORNECEDOR) as (*
FM> *select distinct R.DOCUMENTO, M.PEDIDO, R.ORIGEM_MOVIMENTO*
FM> *from REQUISICAO R*
FM> *inner join MOVIMENTO M on R.DOCUMENTO = M.DOCUMENTO*
FM> *where R.EXCLUIR <> 'S' and*
FM> *      R.TIPO_REQUISICAO = 'CO' and*
FM> *      M.EXCLUIR <> 'S' and*
FM> *      M.PEDIDO is not null and*
FM> *      R.DOCUMENTO not in (select DOCUMENTO*
FM> *                          from CTE_ESTORNO)*
FM> *group by R.DOCUMENTO, M.PEDIDO, R.ORIGEM_MOVIMENTO*
FM> *order by M.PEDIDO desc, R.DOCUMENTO desc),*
FM> *CTE_COMPRA(DOCUMENTO, PEDIDO, CODIGO_FORNECEDOR) as (*
FM> *select TB1.DOCUMENTO, TB1.PEDIDO, TB1.CODIGO_FORNECEDOR*
FM> *from CTE_COMPRA_TBREQUISICAO TB1*
FM> *union all*
FM> *select TB2.DOCUMENTO, TB2.PEDIDO, TB2.CODIGO_FORNECEDOR*
FM> *from CTE_COMPRA_TBMOVIMENTO TB2),*
FM> *CTE_PEDIDOSXCOMPRA(PEDIDO, CODIGO_FORNECEDOR, DOCUMENTO) as (*
FM> *select PEDIDO, CODIGO_FORNECEDOR, DOCUMENTO*
FM> *from CTE_COMPRA*
FM> *group by PEDIDO, CODIGO_FORNECEDOR, DOCUMENTO*
FM> *order by PEDIDO desc, CODIGO_FORNECEDOR, DOCUMENTO desc),*
FM> *CTE_PEDIDOS(PEDIDO, CODIGO_FORNECEDOR, DOC_SAF, CODIGO_PRODUTO, QTDE,
FM> UNID_MED) as (*
FM> *select CTE1.PEDIDO, CTE1.CODIGO_FORNECEDOR, CTE1.DOCUMENTO, LVA.COD_PROD,
FM> LVA.QTDE, UM.ABREVIACAO*
FM> *from CTE_PEDIDOSXCOMPRA CTE1*
FM> *inner join LANCA_VAL LV on CTE1.PEDIDO = LV.NUM_SOLIC and
FM> CTE1.CODIGO_FORNECEDOR = LV.COD_FORNEC*
FM> *inner join LANCA_VALORES LVA on LV.NUM_SOLIC = LVA.NUM_SOLIC and
FM> LV.COD_FORNEC = LVA.COD_FORNEC*
FM> *inner join SOLIC_PRODUTO SP on LVA.NUM_SOLIC = SP.NUM_SOLIC and
FM> LVA.COD_PROD = SP.CODIGO_PRODUTO*
FM> *inner join UNIDADE_MEDIDA UM on SP.CODIGO_UNID_MEDIDA =
FM> UM.CODIGO_UNIDADE_MEDIDA*
FM> *where LVA.FLAG = 'V' and*
FM> *      LVA.EXCLUIR <> 'S' and*
FM> *      LV.EXCLUIR <> 'S'*
FM> *group by CTE1.PEDIDO, CTE1.CODIGO_FORNECEDOR, CTE1.DOCUMENTO, LVA.COD_PROD,
FM> LVA.QTDE, UM.ABREVIACAO*
FM> *order by CTE1.PEDIDO desc, CTE1.CODIGO_FORNECEDOR, CTE1.DOCUMENTO desc,
FM> LVA.COD_PROD),*
FM> *CTE_FINAL (PEDIDO, CODIGO_FORNECEDOR, FORNEC, DOC_SAF, CODIGO_PRODUTO,
FM> QTDE_PEDIDO, UNID_MED, QTDE_ENTREGUE) as*
FM> *(select CTE1.PEDIDO, CTE1.CODIGO_FORNECEDOR, F.NOME as FORNEC,
FM> CTE1.DOC_SAF, CTE1.CODIGO_PRODUTO,*
FM> *       cast(CTE1.QTDE as numeric(12,4)) as QTDE_PEDIDO, CTE1.UNID_MED,*
FM> *       cast(sum(M.QUANTIDADE * M.QTD_EMBALAGEM) as numeric(12,4)) as
FM> QTDE_ENTREGUE*
FM> *from CTE_PEDIDOS CTE1*
FM> *inner join REQUISICAO R on CTE1.DOC_SAF = R.DOCUMENTO and R.PEDIDO =
FM> CTE1.PEDIDO*
FM> *inner join MOVIMENTO M on R.DOCUMENTO = M.DOCUMENTO and CTE1.CODIGO_PRODUTO
FM> = M.CODIGO_PRODUTO*
FM> *inner join FORNECEDOR F on CTE1.CODIGO_FORNECEDOR = F.CODIGO*
FM> *group by CTE1.PEDIDO, CTE1.CODIGO_FORNECEDOR, F.NOME, CTE1.DOC_SAF,
FM> CTE1.CODIGO_PRODUTO, CTE1.QTDE, CTE1.UNID_MED)*
FM> *select PEDIDO, CODIGO_FORNECEDOR, FORNEC, DOC_SAF, CODIGO_PRODUTO,
FM> QTDE_PEDIDO, UNID_MED, QTDE_ENTREGUE*
FM> *  from CTE_FINAL*



FM>   Alguém poderia me ajudar?

FM>   *OBS:*
FM>     Estou utilizando o FB 2.5 Classic Server!


FM> *Obrigado,*
FM> *
FM> *
FM> *
FM> *
FM> *Fabiano*
FM> ______________________________________________
FM> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
FM> Para saber como gerenciar/excluir seu cadastro na lista, use:
FM> http://www.firebase.com.br/fb/artigo.php?id=1107
FM> Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista