Query SQL Add duplicate value

Asked

Viewed 237 times

6

When running the SQL query I get the following result; Resultado da execução da query

However, I would like to receive the result as follows;

886992532299

Executed SQL query;

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'

3 answers

4

Group the result by barcode using the clause GROUP BY and use the aggregation function SUM() to sum these grouped 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 am leaving below you have a very complete answer of how this clause works SQL GROUP BY.

Link: DISTINCT and GROUP BY, what is the difference between the two statements?

  • Great, I was creating the answer! + 1

  • Thanks friend, if you have something to complement send bullet!

  • Paul, the only thing that would change would be the alias 'as' after the sum, so that the column is displayed equally 'quantity'

  • 1

    Good observation, amended response!!

  • Show man, now it’s complete.

  • Now it’s perfect!

Show 1 more comment

4


Here is the suggestion that the FROM clause contains the junctions and the WHERE clause the filters.

-- código #1
set dateformat dmy;
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;

2

Hello! You can use Function SUM(), grouping by the Barcode.bar column. Next:

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

Browser other questions tagged

You are not signed in. Login or sign up in order to post.