1
resposta

Por que meu código não deu certo?

Boa noite, realizei o seguinte código:

SELECT A.[CODIGO DO PRODUTO], SUM([PREÇO] * QUANTIDADE) AS FATURAMENTO,  YEAR(DATA)
FROM [ITENS NOTAS FISCAIS] A INNER JOIN [NOTAS FISCAIS] B
ON A.NUMERO = B.NUMERO 
GROUP BY YEAR(DATA)

Mas persiste no erro "A coluna 'ITENS NOTAS FISCAIS.CODIGO DO PRODUTO' é inválida na lista de seleção porque não está contida em uma função de agregação nem na cláusula GROUP BY."

Entendi o código do professor, mas não entendi o que pode estar errado no meu.

1 resposta

Olá, Felipe, tudo bem?

Ao utilizarmos uma função de agregação, normalmente também precisamos informar a cláusula group by, que é utilizada para agrupar registros semelhantes de uma tabela em um ou mais campos.

No SQL Server não é permitido realizar consultas onde os campos listados na seleção que não estão em uma função de agregação, não estão informados na cláusula group by, ou seja, para conseguir utilizar a cláusula group by, você precisaria informar todos os campos do select que não estão na função SUM:

SELECT A.[CODIGO DO PRODUTO], SUM([PREÇO] * QUANTIDADE) AS FATURAMENTO,  YEAR(DATA)
FROM [ITENS NOTAS FISCAIS] A INNER JOIN [NOTAS FISCAIS] B
ON A.NUMERO = B.NUMERO 
GROUP BY YEAR(DATA), A.[CODIGO DO PRODUTO]

A título de curiosidade, caso queira ler um pouco mais a respeito deste assunto, indico a leitura do artigo Trabalhando com funções de agregação, publicado no blog da Alura.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!