[firebase-br] Duvida SQL

Sandro Souza escovadordebits em gmail.com
Qua Out 3 14:54:43 -03 2012


Bom dia/tarde Pedro.

Meu nobre, faço aqui a minha humilde sugestão.

Ao remover P.QTD_SALDO e B.ESTOQUE_ANTERIOR da cláusula SELECT, também
remova os valores 17 e 18 da cláusula GROUP BY, ou seja, teste o seguinte
SELECT:

*SELECT
  B.COD_PRODUTO, 0, 0, '0', CAST('01/05/2012' AS DATE), '0',
  P.REGISTRO_MS, CAST('01/05/2012' AS DATE), 0, CAST('01/05/2012' AS DATE),
  1, 0, 'M', 'M', '1', '55',
  P.QTD_SALDO - (B.ESTOQUE_ANTERIOR + SUM(B.ENTRADA) - SUM(B.SAIDA) -
SUM(B.PERDA))DIFERENCA
FROM
  BALANCO_CONTROLADO(:DAT_INICIAL, :DAT_FINAL) B
  JOIN PRODUTOS P ON P.COD_PRODUTO = B.COD_PRODUTO
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
HAVING (P.QTD_SALDO <>(B.ESTOQUE_ANTERIOR + SUM(B.ENTRADA) - SUM(B.SAIDA) -
SUM(B.PERDA)))*

Espero ter ajudado mais que atrapalhado. :D

Em 3 de outubro de 2012 10:48, Pedro Braga <bragaped em gmail.com> escreveu:

> Bom Dia a Todos Estou enfrentando uma dificuldade e gostaria de entender
> qual o motivo do problema,
>
> SQL:
> select b.cod_produto, 0, 0, '0',cast('01/05/2012' as date),'0',
> p.registro_ms,
>  cast('01/05/2012' as date),0,cast('01/05/2012' as date),
>  1,0,'M','M',
>  '1','55',       p.qtd_saldo , b.estoque_anterior,
>  p.qtd_saldo-(b.estoque_anterior+sum(b.entrada)-sum(b.saida)-sum(b.perda))
> as diferenca
> from balanco_controlado(:dat_inicial,:dat_final) b
> join produtos p on p.cod_produto=b.cod_produto
> group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 ,17,18
> having ( p.qtd_saldo<>(
> b.estoque_anterior+sum(b.entrada)-sum(b.saida)-sum(b.perda) ) )
>
> o que preciso é trazar os dados da forma que estão sem as colunas
> p.qtd_saldo e b.estoque_anterior contudo se removo as colunas ele me da
> erro
> Invalid token.
> Dynamic SQL Error.
> SQL error code = -104.
> Invalid expression in the select list (not contained in either an aggregate
> function or the GROUP BY clause).
>
> esse sql será utilizado para realizar um insert em outra tabela  ficando
> assim
>
> INSERT INTO CONTROLADO_ENTRADA
> (COD_PRODUTO, COD_FORNECEDOR, NUM_NF, CNPJ, DAT_NF, REGISTRO_MS,
> DAT_RECEBIMENTO, LOTE_ANVISA, TRANSMISSAO_ANVISA,
> NUM_ITEM, ESTOQUE_ANTERIOR, TIPO_CADASTRO, TIPO_PRODUTO,
> SERIE, MODELO,DCB, QUANTIDADE)
>
> select b.cod_produto, 0, 0, '0',cast('01/05/2012' as date),'0',
> p.registro_ms,
>  cast('01/05/2012' as date),0,cast('01/05/2012' as date),
>  1,0,'M','M',
>  '1','55',
>  p.qtd_saldo-(b.estoque_anterior+sum(b.entrada)-sum(b.saida)-sum(b.perda))
> as diferenca
> from balanco_controlado(:dat_inicial,:dat_final) b
> join produtos p on p.cod_produto=b.cod_produto
> group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
> having ( p.qtd_saldo<>(
> b.estoque_anterior+sum(b.entrada)-sum(b.saida)-sum(b.perda) ) )
>
> gostaria um auxilio dos colegas para solucionar o problema.
>
> Pedro E. Braga
> (18) 8144-3939
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista