Amigo, Creio que você queira que o seu select traga as os registros que sigam as seguintes condições.
Condição 1. (DATA BETWEEN add_months(dat_data, -12) AND add_months(dat_data, 0) AND a.ana10_n < 2) Condição 2. (DATA BETWEEN add_months(dat_data, -24) AND add_months(dat_data,-12) AND a.ana10_n = 2) Condição 3. (a.sequencia = 1) Condição 4. (setor, fazenda, lote, talhao) NOT IN (SELECT setor, fazenda, lote, talhao FROM ca_analisis_dig WHERE DATA >= dat_data) ORDER BY talhao DESC) Ou seja: select setor, fazenda, lote, talhao, DATA, a.ana10_n from ca_analisis_dig a where (condicao1 or condicao2) and condicao3 and condicao4 Estou certo? Se for exatamente isso, segue o seu select corrigido. DECLARE dat_data DATE := '01/01/2010'; BEGIN SELECT setor, fazenda, lote, talhao, DATA, a.ana10_n FROM ca_analisis_dig a WHERE (DATA BETWEEN add_months(dat_data, -12) AND add_months(dat_data, 0) AND a.ana10_n < 2 ) --Alteração 3 OR ( --Alteração 2 DATA BETWEEN add_months(dat_data, -24) AND add_months(dat_data,-12) AND a.ana10_n = 2) AND a.sequencia = 1 AND (setor, fazenda, lote, talhao) NOT IN (SELECT setor, fazenda, lote, talhao FROM ca_analisis_dig WHERE DATA >= dat_data) ORDER BY talhao DESC; END; Foram apenas feitas 2 alterações que são a inclusão de um parêntese fechando antes do OR e um abrindo após o OR. Espero ter ajudado. Yuri Grangeiro Email: ygrange...@gmail.com MSN: ygrange...@hotmail.com Twitter: @YuriGrangeiro (85) 8133.1935 (85) 8615.2966 --- Em delphi-br@yahoogrupos.com.br, Murilo Cunha <mcscu...@...> escreveu > > Pessoal, > > Para aqueles q manjam de SQL. > > Meu banco eh ORACLE e gostaria de criar uma variavel onde eu guardo o > valor de uma DATA. > Esta minha variavel seria utilizada em varias partes de meu SELECT. > Eu quero mais ou menos isso: > > DECLARE > dat_data DATE := '01/01/2010'; > BEGIN > SELECT setor, fazenda, lote, talhao, DATA, a.ana10_n > FROM ca_analisis_dig a > WHERE (DATA BETWEEN add_months(dat_data, -12) AND > add_months(dat_data, 0) AND a.ana10_n < 2 > OR DATA BETWEEN add_months(dat_data, -24) AND add_months(dat_data, > -12) AND a.ana10_n = 2) > AND a.sequencia = 1 > AND (setor, fazenda, lote, talhao) NOT IN (SELECT setor, fazenda, > lote, talhao > FROM ca_analisis_dig > WHERE DATA >= dat_data) > ORDER BY talhao DESC; > END; > > > > Estou rodando estas instrucoes em PL/SQL > Mas nao consigo executar este SELECT > Onde estah o erro? > O que estah faltando? > Qual a sugestao dos senhores para este caso? > > > > > Obrigado > MuriloCunha >