Case para idade

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
carlos12
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 123
Registrado em: Qua, 24 Out 2007 4:31 pm
Localização: rio

Tõ aqui dinovo vamu lá

SELECT DISTINCT U.campo1, U.campo2, (U.nascimento, Sysdate) Idade,
IDADE(U.DTINICIO, Sysdate) Tempo_Ativo, duvida

FROM tabela1 U, (select
case
when idade(U.nascimento, Sysdate ) <= 17 then 1
when idade(U.nascimento, Sysdate) >= 18 then 2
when idade(U.nascimento, Sysdate) >= 24 then 3
when idade(U.nascimento, Sysdate) >= 29 then 4
when idade(U.nascimento, Sysdate) >= 34 then 5
when idade(U.nascimento, Sysdate) >= 39 then 6
when idade(U.nascimento, Sysdate) >= 44 then 7
when idade(U.nascimento, Sysdate) >= 49 then 8
when idade(U.nascimento, Sysdate) >= 54 then 9
when idade(U.nascimento, Sysdate) >= 59 then 10
end texto
WHERE
u.campo1= '00' and
bla, bla, bla


bom pessoal não estou conseguindo fazer com que o select traga as faixas etárias, porque será :?: ele dá erro e fica piscanco atraz do "WERE" porque?
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

E ai Carlos beleza??

cara, você quer usar o case como se fosse uma subconsulta??
você poderia postar o select todo aqui??

falou!!

[]'s
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother beleza?

Cara, como o Tineks falow, melhor seria colocar todo o trecho aqui, mas, faz um teste, acho que está faltando um parêntese depois da palavra TEXTO:

Selecionar tudo

SELECT DISTINCT U.campo1, U.campo2, (U.nascimento, Sysdate) Idade, 
IDADE(U.DTINICIO, Sysdate) Tempo_Ativo, duvida 

FROM tabela1 U, (select 
case 
when idade(U.nascimento, Sysdate ) <= 17 then 1 
when idade(U.nascimento, Sysdate) >= 18 then 2 
when idade(U.nascimento, Sysdate) >= 24 then 3 
when idade(U.nascimento, Sysdate) >= 29 then 4 
when idade(U.nascimento, Sysdate) >= 34 then 5 
when idade(U.nascimento, Sysdate) >= 39 then 6 
when idade(U.nascimento, Sysdate) >= 44 then 7 
when idade(U.nascimento, Sysdate) >= 49 then 8 
when idade(U.nascimento, Sysdate) >= 54 then 9 
when idade(U.nascimento, Sysdate) >= 59 then 10 
end texto) 
WHERE 
u.campo1= '00' and 
bla, bla, bla 

Segue um exemplo com sub-consulta:

Selecionar tudo

SELECT *
  FROM (SELECT CASE
                  WHEN (TO_CHAR (SYSDATE, 'dd')) < 30
                     THEN 1
                  ELSE 2
               END
          FROM DUAL) teste
qualquer coisa, manda ai.
carlos12
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 123
Registrado em: Qua, 24 Out 2007 4:31 pm
Localização: rio

pow cara deu certinho eu estou falando vocês são feras mesmo, mas aqui sobre as tabelas você me apertou agora, rs é de empresa e as tabelas ficam sobre a lei sarbanes, num posso correr o risco, imagina alguém vê ai derrepente rola uma passagem pro (parana)(para na rua) hehehe, ai já viu né, espero que entenda amigo num fica chateado mas quando posto aqui eu sempre dou uma disfarçada nos campos.

mas ó a tabela está bem idêntica


deu certinho mais uma vez brigadão
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Beleza, brother, está certíssimo.
É que, realmente não tem como a gente ajudar, quando se falta uma ou outra informação ou, a mensagem é específica para aquela modelagem...

Mas, vai fazendo assim, sem problemas...
quando não puder, mascara, cria uma tabela parecida com outras informações e manda pra gente.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 16 visitantes