Boa tarde Cássio.
Há apenas uma confusão lógica no momento de montar o seu script. Explicarei:
SELECT NOME,
CASE
WHEN YEAR(DATA_DE_NASCIMENTO) < 1990 THEN 'VELHOS'
WHEN YEAR(DATA_DE_NASCIMENTO) >= 1990 AND YEAR(DATA_DE_NASCIMENTO) <= 1995 THEN 'JOVENS'
WHEN YEAR(DATA_DE_NASCIMENTO) > 1995 THEN 'CRIANÇAS'
ELSE 'NÃO NASCEU'
END AS FAIXA_ETARIA
FROM TABELA_DE_CLIENTES
No seu script você considera todas as pessoas nascidas antes de 1990 como velhos, já pessoas entre 1990 e 1995 como jovens e pessoas nascidas A PARTIR DE 1996 como crianças. Ou seja, para "pessoas não nascidas", ainda se classificaria dentro da condição de crianças.
Para considerar NÃO NASCIDOS você deveria verificar o ano corrente na faixa de crianças.
SELECT NOME,
CASE
WHEN YEAR(DATA_DE_NASCIMENTO) < 1990 THEN 'VELHOS'
WHEN YEAR(DATA_DE_NASCIMENTO) >= 1990 AND YEAR(DATA_DE_NASCIMENTO) <= 1995 THEN 'JOVENS'
WHEN YEAR(DATA_DE_NASCIMENTO) > 1995 AND YEAR(DATA_DE_NASCIMENTO) <= YEAR(CURRENT_TIMESTAMP) THEN 'CRIANÇAS'
ELSE 'NÃO NASCEU'
END AS FAIXA_ETARIA
FROM TABELA_DE_CLIENTES
O que resultaria em algo do tipo.
Atenciosamente, Nicholas Góes