MONTH NO 9i

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Qua, 06 Fev 2008 3:44 pm

Pessoal, boa tarde!!!!

Gostaria que me ajudassem, preciso pegar sempre os últimos 6 meses apartir de um mês atual que é dinâmico, porém estou tendo algumas dificuldades utilizo o ORACLE 9i.

select to_char(add_months(to_date(max(DATA),'YYYYMM'),-6),'YYYYMM') FROM Tabela_tempo

porém não está retornando um valor correto.

Então tentei o seguinte.

select data FROM tabela_tempo where month(data) between (select max(month(data)) from tabela_tempo) and (select max(month(data))-6 from Tabela_tempo))

Rodando esse segundo, aparece o seguinte erro...

ORA-00904: "MONTH": invalid identifier

alguém poderia me ajudar?!?!?!

valeu
todopoderoso
Localização: sao paulo - sp

Mensagemem Qua, 06 Fev 2008 3:48 pm

month(data)

não sei se isto é válido teria que ser assim

trunc(data,'month')
TBou
Localização: Campo Grande - MS

Thiago Bourscheidt
thiago.info@apoiorural.com.br
Analista de Sistemas

Mensagemem Qua, 06 Fev 2008 4:08 pm

Cara, valeu pela dica mais infelizmente não funcionou...

apresenta o seguinte erro:

ORA-01722: invalid number

dá uma olhada como ficou:

select data FROM tabela_tempo where trunc(data, 'month') between (select max(trunc(data, 'month')) from tabela_tempo) and (select max(trunc(data, 'month'))-6 from tabela_tempo)
todopoderoso
Localização: sao paulo - sp

Mensagemem Qua, 06 Fev 2008 4:08 pm

Brother,

Seria isso?
Código: Selecionar todos
SELECT ADD_MONTHS(SYSDATE,-6)
  FROM  dual;


Daí só tratar o SYSDATE pelo parâmetro que irá passar.
Trevisolli
Localização: Araraquara - SP

Abraço,

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

Mensagemem Qui, 07 Fev 2008 11:41 am

Seguinte este seu campo DATA é do tipo date..?


e tambem teria que fazer uma alteração no script


Código: Selecionar todos
select data FROM tabela_tempo where trunc(data, 'month') between (select max(trunc(data, 'month')) from tabela_tempo) and ADD_MONTHS((select max(trunc(data, 'month')) from tabela_tempo),-6)


se seu campo DATA for do tipo date esta select deverá funcionar
agora se não for você terá que usar o to_date dentro do trunc

vlw
TBou
Localização: Campo Grande - MS

Thiago Bourscheidt
thiago.info@apoiorural.com.br
Analista de Sistemas

Mensagemem Qui, 07 Fev 2008 11:43 am

melhorando ainda a select podemos evitar a utilização do between

veja

Código: Selecionar todos
select data
FROM tabela_tempo
where trunc(data, 'month') >= ADD_MONTHS((select max(trunc(data, 'month')) from tabela_tempo),-6)
TBou
Localização: Campo Grande - MS

Thiago Bourscheidt
thiago.info@apoiorural.com.br
Analista de Sistemas



Voltar para SQL

Quem está online

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