cultwitch_ Posted September 4, 2022 at 03:42 AM Report Share #627104 Posted September 4, 2022 at 03:42 AM Boa noite a todos! Estou desenvolvendo uma query que possa me proporcionar um relatório de vendas especificando os produtos de cada nota de venda. O problema é que, como a numeração das notas se repete (pois uma nota pode ter mais de um produto relacionado), o valor total de cada nota é trazido mais de uma vez. No final das contas, o somatório dos valores totais das notas difere muito pois considera todas as duplicatas de valor. Há algum modo de ignorar ou excluir ou substituir os valores repetidos (por um valor nulo, por exemplo, que não interfira no somatório) utilizando SQL? Eis a minha query até o momento: SELECT NFVENDA.nf_numero AS NUMERO, NFVENDA.nf_serie AS SERIE, NFVENDA.nf_modelo AS MODELO, NFVENDA.dt_emissao AS EMISSAO, ITEM.id_identificador AS CODIGO, ESTOQUE.descricao AS PRODUTO, ITEM.cfop AS CFOP, ITEM.qtd_item AS QUANTIDADE, ITEM.vlr_unit AS VAL_UNITARIO, ITEM.vlr_total AS TOTAL_ITEM, TOTAIS.tot_nf AS TOTAL_NF FROM tb_nfv_item ITEM, tb_nfvenda NFVENDA, tb_estoque ESTOQUE, tb_nfvenda_tot TOTAIS WHERE NFVENDA.dt_emissao BETWEEN '01.07.2022' AND '31.07.2022' AND ITEM.id_nfvenda = NFVENDA.id_nfvenda AND estoque.id_estoque = item.id_identificador AND TOTAIS.id_nfvenda = NFVENDA.id_nfvenda ORDER BY NFVENDA.nf_numero A saída que eu tenho é semelhante a isto (https://drive.google.com/file/d/17Rq5bGfaZ6CrAFFWwE0fx72wwJDUW1xC/view?usp=sharing) Link to comment Share on other sites More sharing options...
Cerzedelo Posted September 4, 2022 at 02:58 PM Report Share #627106 Posted September 4, 2022 at 02:58 PM 11 horas atrás, cultwitch_ disse: Boa noite a todos! Estou desenvolvendo uma query que possa me proporcionar um relatório de vendas especificando os produtos de cada nota de venda. O problema é que, como a numeração das notas se repete (pois uma nota pode ter mais de um produto relacionado), o valor total de cada nota é trazido mais de uma vez. No final das contas, o somatório dos valores totais das notas difere muito pois considera todas as duplicatas de valor. Há algum modo de ignorar ou excluir ou substituir os valores repetidos (por um valor nulo, por exemplo, que não interfira no somatório) utilizando SQL? Eis a minha query até o momento: SELECT NFVENDA.nf_numero AS NUMERO, NFVENDA.nf_serie AS SERIE, NFVENDA.nf_modelo AS MODELO, NFVENDA.dt_emissao AS EMISSAO, ITEM.id_identificador AS CODIGO, ESTOQUE.descricao AS PRODUTO, ITEM.cfop AS CFOP, ITEM.qtd_item AS QUANTIDADE, ITEM.vlr_unit AS VAL_UNITARIO, ITEM.vlr_total AS TOTAL_ITEM, TOTAIS.tot_nf AS TOTAL_NF FROM tb_nfv_item ITEM, tb_nfvenda NFVENDA, tb_estoque ESTOQUE, tb_nfvenda_tot TOTAIS WHERE NFVENDA.dt_emissao BETWEEN '01.07.2022' AND '31.07.2022' AND ITEM.id_nfvenda = NFVENDA.id_nfvenda AND estoque.id_estoque = item.id_identificador AND TOTAIS.id_nfvenda = NFVENDA.id_nfvenda ORDER BY NFVENDA.nf_numero A saída que eu tenho é semelhante a isto (https://drive.google.com/file/d/17Rq5bGfaZ6CrAFFWwE0fx72wwJDUW1xC/view?usp=sharing) Tente utilizar o comando SELECT DISTINCT. https://www.w3schools.com/sql/sql_distinct.asp Link to comment Share on other sites More sharing options...
cultwitch_ Posted September 4, 2022 at 04:53 PM Author Report Share #627107 Posted September 4, 2022 at 04:53 PM (edited) 2 hours ago, Cerzedelo said: Tente utilizar o comando SELECT DISTINCT. https://www.w3schools.com/sql/sql_distinct.asp Já tentei utilizar DISTINCT, sem sucesso. A questão é que, para cada produto diferente pertencente a determinada nota, o valor total da mesma seja trazido, causando repetição que eu gostaria de eliminar. Eu gostaria de manter os outros campos de interesse (como nome e código do produto) na mesma consulta, e trazer somente uma ocorrência do valor total para cada número de nota existente (ignorando as repetições). Edited September 4, 2022 at 05:00 PM by cultwitch_ Link to comment Share on other sites More sharing options...
Cerzedelo Posted September 5, 2022 at 08:45 AM Report Share #627108 Posted September 5, 2022 at 08:45 AM 15 horas atrás, cultwitch_ disse: Já tentei utilizar DISTINCT, sem sucesso. A questão é que, para cada produto diferente pertencente a determinada nota, o valor total da mesma seja trazido, causando repetição que eu gostaria de eliminar. Eu gostaria de manter os outros campos de interesse (como nome e código do produto) na mesma consulta, e trazer somente uma ocorrência do valor total para cada número de nota existente (ignorando as repetições). Se pretende que seja apresentada na selecção uma única vez o numero da nota, tem de utilizar no SELECT a cláusula GROUP BY que vai agrupar todas os registos de uma determinada nota numa única linha. Neste caso o GROUP BY teria de ser pelo número da nota. https://www.w3schools.com/sql/sql_groupby.asp No site que indico em Sql tutorial (menu à esquerda) tem todos os comandos sql que pode utilizar. Pesquise por entre eles e veja se algum se adapta às suas necessidades. Link to comment Share on other sites More sharing options...
jsWizard Posted September 5, 2022 at 08:56 AM Report Share #627111 Posted September 5, 2022 at 08:56 AM Tens de usar GROUP BY (tal como já foi dito) mas tb tens de escolher que colunas queres ter.. Porque ter esta coluna (só port exemplo) não te vai permitir fazer o group by que precisas: ITEM.id_identificador Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now