SQL Query Add duplicate value

5

When executing the SQL query I get the following result;

However,Iwouldliketoreceivetheresultasfollows;

SQL Query executed;

SELECT

        CODIGO_BARRAS.barra,
        produtos_eventos.quantidade


     FROM
        PRODUTOS_EVENTOS,
        MOVIMENTO, 
        CODIGO_BARRAS
     WHERE
         MOVIMENTO.COD_OPERACAO = PRODUTOS_EVENTOS.COD_OPERACAO
        and PRODUTOS_EVENTOS.PRODUTO = CODIGO_BARRAS.PRODUTO
        and PRODUTOS_EVENTOS.COR = CODIGO_BARRAS.COR
        and PRODUTOS_EVENTOS.TAMANHO = CODIGO_BARRAS.TAMANHO
        and   PRODUTOS_EVENTOS.NOTA='2949'
        and MOVIMENTO.DATA_ATUALIZACAO >'01.12.2018'
    
asked by anonymous 28.12.2018 / 14:15

3 answers

4

Here is the suggestion in the FROM clause that the joins are in the WHERE clause and the filters.

-- código #1
SELECT CODIGO_BARRAS.barra,
       sum (produtos_eventos.quantidade) as Quantidade
  from PRODUTOS_EVENTOS
       inner join MOVIMENTO on MOVIMENTO.COD_OPERACAO = PRODUTOS_EVENTOS.COD_OPERACAO 
       inner join CODIGO_BARRAS on PRODUTOS_EVENTOS.PRODUTO = CODIGO_BARRAS.PRODUTO
                                   and PRODUTOS_EVENTOS.COR = CODIGO_BARRAS.COR
                                   and PRODUTOS_EVENTOS.TAMANHO = CODIGO_BARRAS.TAMANHO
  where PRODUTOS_EVENTOS.NOTA='2949'
        and MOVIMENTO.DATA_ATUALIZACAO >'01.12.2018'
  group by CODIGO_BARRAS.barra;
    
28.12.2018 / 14:21
4

Group the result by the barcode using the GROUP BY clause and use the SUM() aggregation function to aggregate these clustered results.

Modify your query to look like this:

SELECT CODIGO_BARRAS.barra,
       SUM(produtos_eventos.quantidade) AS Quantidade
 FROM
    PRODUTOS_EVENTOS,
    MOVIMENTO, 
    CODIGO_BARRAS
 WHERE
     MOVIMENTO.COD_OPERACAO = PRODUTOS_EVENTOS.COD_OPERACAO
    and PRODUTOS_EVENTOS.PRODUTO = CODIGO_BARRAS.PRODUTO
    and PRODUTOS_EVENTOS.COR = CODIGO_BARRAS.COR
    and PRODUTOS_EVENTOS.TAMANHO = CODIGO_BARRAS.TAMANHO
    and PRODUTOS_EVENTOS.NOTA='2949'
    and MOVIMENTO.DATA_ATUALIZACAO >'01.12.2018'
GROUP BY CODIGO_BARRAS.barra

In the link I'm leaving below you have a very complete answer to how this SQL GROUP BY clause works.

Link: #

    
28.12.2018 / 14:17
2

Hello! You can use the SUM () function, grouping it by the column Bar_Code.bar. Here's how:

SELECT
      CODIGO_BARRAS.barra,
      SUM(produtos_eventos.quantidade) AS QUANTIDADE
  FROM
      PRODUTOS_EVENTOS,
      MOVIMENTO, 
      CODIGO_BARRAS
  WHERE
      MOVIMENTO.COD_OPERACAO = PRODUTOS_EVENTOS.COD_OPERACAO
      and PRODUTOS_EVENTOS.PRODUTO = CODIGO_BARRAS.PRODUTO
      and PRODUTOS_EVENTOS.COR = CODIGO_BARRAS.COR
      and PRODUTOS_EVENTOS.TAMANHO = CODIGO_BARRAS.TAMANHO
      and   PRODUTOS_EVENTOS.NOTA='2949'
      and MOVIMENTO.DATA_ATUALIZACAO >'01.12.2018'
      GROUP BY CODIGO_BARRAS.barra
    
28.12.2018 / 14:23