Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Construção e utilização de tabelas já existentes

Pessoal, boa tarde!

Por exemplo para responder a pergunta: QUAL FOI O PRODUTO QUE MAIS VENDEU E QUAL QUANTIDADE?

Utilizaria as tabelas de [Tabela de produtos] e [Itens notas fiscais] , cruzaria as duas pela chave de [código do produto]

Sintaxe correta

SELECT a.[CODIGO DO PRODUTO], a.[QUANTIDADE] as SOMA_QTD, a.[PREÇO] as SOMA_PREÇO, b.[NOME DO PRODUTO] FROM [ITENS NOTAS FISCAIS] A
LEFT JOIN  [TABELA DE PRODUTOS] B 
ON A.[CODIGO DO PRODUTO] =B. [CODIGO DO PRODUTO] 

Porém não estou conseguindo acertar a sintaxe para sumarizar a tabela e queria realizar em 2 Steps.

Abaixo sintaxe incorreta:

SELECT a.[CODIGO DO PRODUTO], a.SUM([QUANTIDADE]) as SOMA_QTD, a.SUM([PREÇO]) AS SOMA_PREÇO, b.[NOME DO PRODUTO] FROM [ITENS NOTAS FISCAIS] A
LEFT JOIN  [TABELA DE PRODUTOS] B 
ON A.[CODIGO DO PRODUTO] =B. [CODIGO DO PRODUTO] GROUP BY [CODIGO DO PRODUTO] [NOME DO PRODUTO]

Há alguma alternativa para quando por exemplo não acertar a sintaxe de sumarização e realizar um segundo step utilizando a tabela já criada?

Atenciosamente,

2 respostas
solução!

Boa noite Guilherme,

Se entendi bem, na consulta com a sintaxe incorreta, você precisa saber o produto que mais vendeu. Nessa consulta, conseguir identificar dois problemas.

  1. Quando vamos utilizar uma função agregativa e passamos o campo para ela, o alias da tabela fica internamente a função. Ou seja, no SQL passado a função SUM está escrita a.SUM([QUANTIDADE]) quando deveria ser SUM(a.[QUANTIDADE]), viu a diferença?

  2. Ao utilizarmos uma função agregativa e retornamos outros campos externamente a essa função, precisamos agrupar tais campos na cláusula GROUP BY, conforme foi feito por você. Porém nessa clausula encontra-se ausente virgula para separar os campos. Além disso, nesse caso, como o código do produto existe com o mesmo nome de coluna nas duas tabelas envolvidas, faz-se necessário colocar o alias da tabela no campo informado no GROUP BY para evitar erro de ambiguidade de coluna. Inclusive, eu recomendo que mesmo que não exista ambiguidade seja informado o alias.

Diante disso, creio que a sintaxe correta para tal consulta seria a abaixo:

SELECT a.[CODIGO DO PRODUTO]
      , SUM(a.[QUANTIDADE]) as SOMA_QTD
      , SUM(a.[PREÇO]) AS SOMA_PREÇO
      , b.[NOME DO PRODUTO] 
  FROM [ITENS NOTAS FISCAIS] A
  LEFT JOIN  [TABELA DE PRODUTOS] B ON A.[CODIGO DO PRODUTO] = B.[CODIGO DO PRODUTO] 
 GROUP BY a.[CODIGO DO PRODUTO], b.[NOME DO PRODUTO]
 ORDER BY SUM(a.[QUANTIDADE]) DESC;

Espero ter ajudado em seu questionamento.

Caro amigo Breno, muito obrigado pelo esclarecimento!