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

AULA 03 Mudando a apresentação dos dados de uma consulta - 12 Classificando clientes por faixa etária

Porque não posso usar o código abaixo em vez de "between"? Deu erro no <=1995":

SELECT NOME,
CASE 
    WHEN YEAR([DATA DE NASCIMENTO])<1990 THEN 'ADULTOS'
    WHEN YEAR([DATA DE NASCIMENTO]) >=1990 AND <=1995 THEN 'JOVEM'
    ELSE 'CRIANÇA' END AS [CLASSIFICAÇÃO ETARIA]
FROM [TABELA DE CLIENTES]

Outra dúvida: Porque não posso usar o código abaixo no início?

SELECT NOME, YEAR([DATA DE NASCIMENTO])
3 respostas
solução!

Olá Nailson, tudo bem? Bom no caso da primeira query, o problema é que precisamos informa um valor para ser com parado com <=1995, nesse caso deveríamos informar YEAR([DATA DE NASCIMENTO]) também após o AND, com isso a query deveria ser assim:

SELECT NOME,
CASE 
    WHEN YEAR([DATA DE NASCIMENTO]) < 1990 THEN 'ADULTOS'
    WHEN YEAR([DATA DE NASCIMENTO]) >=1990 AND YEAR([DATA DE NASCIMENTO]) <= 1995 THEN 'JOVEM'
    ELSE 'CRIANÇA' END AS [CLASSIFICAÇÃO ETARIA]
FROM [TABELA DE CLIENTES]

Sobre sua outra dúvida, pode sim usar o YEAR([DATA DE NASCIMENTO]) desde que informe de qual tabela, da seguinte forma:

SELECT NOME, YEAR([DATA DE NASCIMENTO]) FROM [TABELA DE CLIENTES]

Ou ainda a somatória das duas consultas ficando da seguinte forma:

SELECT NOME, YEAR([DATA DE NASCIMENTO]),
CASE 
    WHEN YEAR([DATA DE NASCIMENTO]) < 1990 THEN 'ADULTOS'
    WHEN YEAR([DATA DE NASCIMENTO]) >=1990 AND YEAR([DATA DE NASCIMENTO]) <= 1995 THEN 'JOVEM'
    ELSE 'CRIANÇA' END AS [CLASSIFICAÇÃO ETARIA]
FROM [TABELA DE CLIENTES]

Espero ter esclarecido sua dúvida!

Entendi, a primeira dúvida foi solucionada. A segunda dúvida ainda não, modifiquei o código dessas três formas, mas o resultado foi Sintaxe incorreta próxima à palavra-chave 'CASE'.

SELECT NOME,YEAR([DATA DE NASCIMENTO])FROM [TABELA DE CLIENTES]
CASE 
    WHEN YEAR([DATA DE NASCIMENTO])<1990 THEN 'ADULTOS'
    WHEN YEAR([DATA DE NASCIMENTO]) >=1990 AND year([DATA DE NASCIMENTO])<=1995 THEN 'JOVENS'
    ELSE 'CRIANÇAS' END AS [CLASSIFICAÇÃO ETARIA]
FROM [TABELA DE CLIENTES]

Sem o FROM [TABELA DE CLIENTES] no final

SELECT NOME,YEAR([DATA DE NASCIMENTO])FROM [TABELA DE CLIENTES]
CASE 
    WHEN YEAR([DATA DE NASCIMENTO])<1990 THEN 'ADULTOS'
    WHEN YEAR([DATA DE NASCIMENTO]) >=1990 AND year([DATA DE NASCIMENTO])<=1995 THEN 'JOVENS'
    ELSE 'CRIANÇAS' END AS [CLASSIFICAÇÃO ETARIA]

Com a vírgula no final da primeira linha

SELECT NOME,YEAR([DATA DE NASCIMENTO])FROM [TABELA DE CLIENTES],
CASE 
    WHEN YEAR([DATA DE NASCIMENTO])<1990 THEN 'ADULTOS'
    WHEN YEAR([DATA DE NASCIMENTO]) >=1990 AND year([DATA DE NASCIMENTO])<=1995 THEN 'JOVENS'
    ELSE 'CRIANÇAS' END AS [CLASSIFICAÇÃO ETARIA]
FROM [TABELA DE CLIENTES]

Resolvido!! Valeu Mestre!

SELECT NOME,YEAR([DATA DE NASCIMENTO]),
CASE 
    WHEN YEAR([DATA DE NASCIMENTO])<1990 THEN 'ADULTOS'
    WHEN YEAR([DATA DE NASCIMENTO]) BETWEEN 1990 AND 1995 THEN 'JOVENS'
    ELSE 'CRIANÇAS' END AS [CLASSIFICAÇÃO ETARIA]
FROM [TABELA DE CLIENTES]