1
resposta

RETORNO SUBQUERY NÃO ACEITA POR AUSÊNCIA DE EXPRESSÃO 'EXISTS'

Oi, pessoal!

Estou tentando realizar o exercício 12 do capítulo 4 do curso Microsoft SQL Server 2022 - Consultas Avançadas. Fui bem sucedido usando JOIN, mas ao tentar replicar com Subquery, mesmo seguindo as orientações, recebo o seguinte erro:

  • Mensagem 116, Nível 16, Estado 1, Linha 21 Somente uma expressão pode ser especificada na lista de seleção quando a subconsulta não é introduzida com EXISTS.

Alguma dica de como rodar esta subconsulta?

Aproveito para incluir a tela contendo o comando realizado com JOIN e SUBQUERY, sendo que o retorno acima pertence a segunda QUERY:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Oi, Ricardo! Tudo bem?

Você está no caminho certo para desenvolver a subconsulta! A mensagem de erro que você compartilhou afirma que estamos tentando trabalhar com dois campos (INF.CODIGO_DO_PRODUTO e SUM(INF.QUANTIDADE) AS QUANTIDADE) dentro da subconsulta, o que não é possível quando usamos a cláusula IN desta maneira.

Para que tudo funcione como o esperado, precisamos lidar com apenas uma coluna, a qual será analisada pela "tabela externa".

Os sabores que estamos buscando podem ser apresentados levando em consideração o código do produto. Por esse motivo, removeremos o SUM(INF.QUANTIDADE) AS QUANTIDADE e deixaremos apenas INF.CODIGO_DO_PRODUTO, desta forma:

SELECT DISTINCT SABOR FROM TABELA_DE_PRODUTOS WHERE
CODIGO_DO_PRODUTO IN (
SELECT INF.CODIGO_DO_PRODUTO FROM ITENS_NOTAS_FISCAIS  INF
INNER JOIN TABELA_DE_PRODUTOS TP 
ON INF.CODIGO_DO_PRODUTO = TP.CODIGO_DO_PRODUTO
GROUP BY INF.CODIGO_DO_PRODUTO, TP.NOME_DO_PRODUTO HAVING SUM(INF.QUANTIDADE) > 394000 );

Com isso, garantimos que a tabela externa compare seus códigos de produto com os códigos de produto contido na tabela interna, retornando apenas o que é de seu interesse! Ao final, teremos uma lista com os sabores mais vendidos pela loja de sucos de fruta.

Espero ter ajudado, Ricardo! Fico à disposição caso novas dúvidas surjam.

Abraços!

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