Olá,
Nos vídeos o professor criou essa query, com junção de outra query no inner join:
SELECT
TC.CPF, TC.NOME, TC.VOLUME_DE_COMPRA, TV.MES_ANO, TV.QUANTIDADE_TOTAL,
(CASE WHEN TC.VOLUME_DE_COMPRA >= TV.QUANTIDADE_TOTAL THEN 'VENDAS VÁLIDAS'
ELSE 'VENDAS INVÁLIDAS' END) AS RESULTADO
FROM TABELA_DE_CLIENTES TC
INNER JOIN (
SELECT NF.CPF,
CONVERT(VARCHAR(7), NF.DATA_VENDA, 120) AS MES_ANO,
SUM(INF.QUANTIDADE) AS QUANTIDADE_TOTAL
FROM NOTAS_FISCAIS NF
INNER JOIN ITENS_NOTAS_FISCAIS INF
ON NF.NUMERO = INF.NUMERO
GROUP BY NF.CPF, CONVERT(VARCHAR(7), NF.DATA_VENDA, 120)
) TV
ON TV.CPF = TC.CPF
WHERE TV.MES_ANO = '2015-01';
Fiz alguns testes e criei a mesma consulta apenas fazendo inner join pela tabelas sem usar o inner join em outra consulta, como feito abaixo:
SELECT NF.CPF, TC.NOME, TC.VOLUME_DE_COMPRA,
CONVERT(VARCHAR(7),NF.DATA_VENDA,120) AS MES_ANO,
SUM(INF.QUANTIDADE) AS QUANTIDADE_TOTAL,
CASE WHEN TC.VOLUME_DE_COMPRA >= SUM(INF.QUANTIDADE)
THEN 'VENDAS VALIDAS'
ELSE 'VENDAS INVALIDA'
END
FROM NOTAS_FISCAIS NF
INNER JOIN ITENS_NOTAS_FISCAIS INF
ON NF.NUMERO = INF.NUMERO
INNER JOIN TABELA_DE_CLIENTES TC
ON NF.CPF = TC.CPF
GROUP BY NF.CPF, CONVERT(VARCHAR(7),NF.DATA_VENDA,120), TC.VOLUME_DE_COMPRA, TC.NOME
Minha dúvida é a seguinte, na junção de querys ela é viável? Tem alguns casos que é realmente é necessário juntar as querys para solucionar o problema, que não existira outra forma para solucionar?
Agradeço a ajuda, porque vejo que a junção de querys acaba as vezes tendo mais complexidade para a criação, gostaria de saber se é bem usado no dia a dia, para focar mais alguns treinos com ela ou se busco treinar a solução de uma forma mais simples se ela não ser realmente necessária.