Jump to content

Eliminar/ignorar/substituir valores duplicados em coluna


cultwitch_

Recommended Posts

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

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

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 by cultwitch_
Link to comment
Share on other sites

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.