onde C, no campo ALIQCST, significa que o item do cupom foi cancelado,
e o T, a sua situação tributária.
Na primeira query, minha SQL ficou da seguinte forma:
SELECT DATA, COO, SUM(VRLIQUIDO) AS TOTAL FROM SIN60I WHERE DATA = :DATA AND ALIQCST <> "CANC"
GROUP BY DATA, COO
Ela soma o valor total dos itens, agrupando os resultados por data e cupom,
simulando o total geral do cupom fiscal. Na segunda query eu mostro os itens
do cupom, assim:
SELECT COO, ITEM, MATRIC, QUANT, VRUNIT, VRLIQUIDO, BASEICMS,
VRICMS FROM SIN60I WHERE COO = :COO
GROUP BY COO, ITEM, MATRIC, QUANT, VRUNIT, VRLIQUIDO, BASEICMS,
VRICMS
HAVING COUNT(ITEM) = 1
O problema está na primeira query. Ela deixa de somar o cupom com situação
C, correto, mas ela tb deveria não somar o item que está cancelado. Pegando
Pergunta
Duduh_Capixaba
Olá pessoas!
Estou querendo mostrar dois resultados, em dois grids, pegando
dados da mesma tabela. Vamos lá!
Os campos que eu tenho na tabela são: DATA, COO, ITEM, MATRIC, QUANT, VRUNIT, VRLIQUIDO, ALIQCST
e referem-se a cupons fiscais. Os dados estão gravados na tabela no seguinte modo:
01/10/2009 | 000001 | 001 | 000010 | 1,00 | 1,50 | 1,50 | T
01/10/2009 | 000001 | 002 | 000055 | 2,00 | 1,50 | 3,00 | T
01/10/2009 | 000002 | 001 | 000110 | 1,00 | 0,50 | 0,50 | T
02/10/2009 | 000003 | 001 | 000023 | 1,00 | 0,99 | 0,99 | T
02/10/2009 | 000003 | 002 | 005009 | 3,00 | 1,50 | 4,50 | T
02/10/2009 | 000003 | 003 | 000211 | 2,00 | 0,50 | 1,00 | T
03/10/2009 | 000004 | 001 | 000010 | 1,00 | 1,99 | 1,99 | T
02/10/2009 | 000003 | 003 | 000211 | 2,00 | 0,50 | 1,00 | C
onde C, no campo ALIQCST, significa que o item do cupom foi cancelado,
e o T, a sua situação tributária.
Na primeira query, minha SQL ficou da seguinte forma:
Ela soma o valor total dos itens, agrupando os resultados por data e cupom, simulando o total geral do cupom fiscal. Na segunda query eu mostro os itens do cupom, assim:O problema está na primeira query. Ela deixa de somar o cupom com situação
C, correto, mas ela tb deveria não somar o item que está cancelado. Pegando
como base o exemplo acima:
02/10/2009 | 000003 | 001 | 000023 | 1,00 | 0,99 | 0,99 | T
02/10/2009 | 000003 | 002 | 005009 | 3,00 | 1,50 | 4,50 | T
02/10/2009 | 000003 | 003 | 000211 | 2,00 | 0,50 | 1,00 | T
02/10/2009 | 000003 | 003 | 000211 | 2,00 | 0,50 | 1,00 | C
a soma disso tudo dá: 7,49. O resultado da minha SQL mostra: 6,49.
Mas o valor correto a mostrar seria: 5,49, pois apenas os itens 1 e 2
foram realmente impressos, o 3 foi cancelado, mas é exibido duas
vezes. A segunda SQL está correta, ela mostra apenas os itens que
realmente foram impressos, isso porque eu exibo apenas os itens que,
somados, tem valor igual a 1. Já na primeira SQL eu não tenho como
usar este atributo, pois os itens não podem aparecer na consulta.
Já tentei várias formas de solucionar o problema, com vários selects
diferentes, mas sem muito sucesso. Vou continuar tentado, enquanto
aguardo uma ajuda.
Editado por Duduh_CapixabaLink para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.