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

Group By Numero

Olá. Eu quis realizar um teste com o agrupamento diferente do exercício proposto da seguinte forma: Agrupar pela coluna numero, realizando a soma do produto (quantidade * preço * imposto) de todas as vendas de 2016.

Então basicamente eu queria pegar todas as linhas de cada numero da tabela ITENS_NOTAS_FISCAIS, realizar a multiplicação pegando o valor de imposto da outra tabela, e agrupar pelo seu numero de identificação.

Tentei:

SELECT NUMERO, FLOOR(SUM(IMPOSTO(PRECOQUANTIDADE)))

FROM ITENS_NOTAS_FISCAIS A INNER JOIN NOTAS_FISCAIS B ON A.NUMERO = B.NUMERO

WHERE TO_CHAR(DATA_VENDA, 'YYYY') = 2016 GROUP BY NUMERO;

E recebi o erro: ORA-00918: coluna definida de maneira ambígua

  1. 00000 - "column ambiguously defined" *Cause:*Action: Erro na linha: 40 Coluna: 10
2 respostas
solução!

Oii Thiago, tudo bom?

Como tem colunas com o mesmo nome em ambas tabelas, é necessário que você especifique o alias no select e no group by. Caso contrário, o banco de dados irá retornar um erro de coluna definida de maneira ambígua. O alias é o nome/apelido que você dá para tabela, como o A** que você apelidou a tabela de itens e o **B da tabela de notas. Segue o exemplo com seu código, usei o numero da tabela de notas para agrupar, mas é você quem decide qual tabela vai usar.

SELECT *B.NUMERO*, 
FLOOR(SUM(IMPOSTO(PRECOQUANTIDADE)))

FROM ITENS_NOTAS_FISCAIS A 

INNER JOIN NOTAS_FISCAIS B ON A.NUMERO = B.NUMERO

WHERE TO_CHAR(DATA_VENDA, 'YYYY') = 2016 
GROUP BY *B.NUMERO*;

Espero ter ajudado. Qualquer coisa estou por aqui, tá bom? :)

Oi Maria, obrigado pela ajuda.

Funcionou certinho, era isso mesmo. Eu estava me perdendo em quando usar o "alias." , acabei tentando de outros jeitos e nunca da maneira certa como você explicou haha

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software