Para comecar gostaria pedir desculpas pela falta de acentuacao no texto, o meu teclado nao possui a maior parte dos acentos. Nao possuo uma dúvida, mas uma sugestao a respeito do resultado do seguinte codigo:
SELECT DISTINCT A.cpf, A.nome, B.cpf
FROM tabela_de_clientes A LEFT JOIN notas_fiscais B
ON A.cpf = B.cpf
WHERE B.cpf IS NULL AND YEAR(B.data_venda) = 2015;
O resultado saiu nulo pois nao há valores de data registrados no cliente que nao fez compras, ou seja, existe somente um valor nulo com o qual nao se pode usar a funcao YEAR()
a qual é relativa a tipos de dado relacionados a data. Portanto uma correcao ao codigo que possa incluir o cliente que nao realizou compras na análise anual sem mudar a estrutura da base de dados é utilizar o código a seguir:
SELECT DISTINCT A.cpf, A.nome, B.cpf
FROM tabela_de_clientes A LEFT JOIN notas_fiscais B ON A.cpf = B.cpf
WHERE B.cpf IS NULL AND YEAR(B.data_venda) = 2015 OR B.data_venda IS NULL;
No final, percebe-se que foi usado B.data_venda IS NULL
e nao YEAR(B.data_venda) IS NULL
, já que, como mencionado anteriomente, se o valor de data_venda for um tipo indefinido ele nao funciona com a funcao YEAR()
.
Obrigado pelo curso, aprendi muito!