Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

The Queen

Numeração por blocos

Recommended Posts

Gostaria de saber se tem como fazer o seguinte:

 

Tenho um Select (Select contrato, parcela, valor from parcela where dt_rcb >= '01-may-2008' and dt_rcb <= '31-may-2008') que retorna algo parecido com:

 

a456852 --- 45 --- 78.23

a456852 --- 44 --- 78.23

a456852 --- 46 --- 78.23

a456852 --- 48 --- 78.23

a456852 --- 36 --- 78.23

a456852 --- 21 --- 78.23

b875556 --- 58 --- 96.85

b875556 --- 56 --- 96.85

b875556 --- 57 --- 96.85

b875556 --- 21 --- 96.85

 

Gostaria de saber como gerar uma consulta que numerasse os blocos como no exemplo abaixo

 

a456852 --- 45 --- 78.23 --- 1

a456852 --- 44 --- 78.23 --- 2

a456852 --- 46 --- 78.23 --- 3

a456852 --- 48 --- 78.23 --- 4

a456852 --- 36 --- 78.23 --- 5

a456852 --- 21 --- 78.23 --- 6

b875556 --- 58 --- 96.85 --- 1

b875556 --- 56 --- 96.85 --- 2

b875556 --- 57 --- 96.85 --- 3

b875556 --- 21 --- 96.85 --- 4

 

Quem puder me ajudar eu seria eternamente grata

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não conheço bem estas funções mas acho que a DENSE RANK faria isto que você quer.

 

http://download.oracle.com/docs/cd/B10501_...35a.htm#1017938

 

Pq não foges da função aggregate ? Medo ? O banco não suporta ? você não as suporta ? :)

 

Não vi nenhum jeito de fazer por sql.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acontece que a tabela Parcela que estou usando possui mais de 155351332 de registros. Toda vez que utilizo uma função aggregate tipo, max, min, count , as tradicionais meu tempo de execução sobe de 0.745 segundos para 8 horas. Mesmo usando indices, hints de performance entre outras coisas não consigo uma performance melhor. Então estou quebrando meu select principal em vários outros, jogando o resultado numa tabela auxiliar. Sei lá. Já fiz uma porção de truques no oracle, mas isso está me matando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se é uma tabela parcela você não poderia criar uma coluna numeradora ? Esta coluna já não existe ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

SE ELA ME RETORNASSE TODOS OS DADOS SIM, ACONTECE QUE QUANDO USO O FILTRO "where dt_rcb >= '01-may-2008' and dt_rcb <= '31-may-2008'" ELA RETIRA ALGUNS NÚMEROS DE PARCELAS.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O DENSE_RANK FUNCIONA PARA A NUMERAÇÃO, PORÉM NÃO RESOLVE MEU PROBLEMA DE PERFORMANCE. PRA MIM O IDEAL SERIA: OU MOSTRATAR APENAS OS NUMEROS DE CONTRATOS QUE ATENDAM O REQUISITO "where dt_rcb >= '01-may-2008' and dt_rcb <= '31-may-2008'" (ISSO SEM USAR GROUP BY O DISTINCT QUE DENIGRE A PERFORMANCE) OU MOSTRAR TODAS AS PARCELAS DO CONTRATO EM QUE PELO MENOS UMA DAS PARCELAS ATENDAM REQUISITO "where dt_rcb >= '01-may-2008' and dt_rcb <= '31-may-2008'". EXEMPLO.

 

OU ESSA SOLUÇÃO

 

A54545

B54545

 

 

OU ESSA

 

A54545 --- 1

A54545 --- 2 -- '05-MAY-2008'

A54545 --- 3

A54545 --- 4 -- '10-MAY-2008'

A54545 --- 5

A54545 --- 6

B54545 --- 1

B54545 --- 2

B54545 --- 3 -- '11-MAY-2008'

B54545 --- 4

 

ATUALMENTE EU SÓ CONSIGO

 

 

A54545 --- 2 -- '05-MAY-2008'

A54545 --- 4 -- '10-MAY-2008'

B54545 --- 3 -- '11-MAY-2008'

 

ISSO SEM USAR NENHUMA FUNÇÃO AGGREGATE POIS SENÃO MEU PROCESSAMENTO VAI PRA LÁ DE 8 HS

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jà tentou um indice pela data dt_rcb , ou até um indice sobre funcão

trunc(dt_rcb,'mm')

ou

sendo o intervalo sempre um mês , criar uma coluna como o mês e alimenta-la por trigger, o indice sobre esta coluna.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tabela já possui indice por dt_rcb, eu não tenho permissão pra mexer nesta tabela pq ela pertence a outro sistema. As melhores cabeças aqui não conseguem ver nenhum resultado. Até View eu tentei criar e nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já vi que é espinhento, não vi mesmo nenhuma solução.

 

O que é gerado ?

 

Um relatório ?

 

Não poderia ser feito um processo atualizador que gerasse uma tabela auxiliar durante a noite ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

é gerado um arquivo do excel, o ruim que se demora muito o excel do usuário trava. não tenho permissão para rodar nenhum script a noite. acho que vou fazer a versão demorada mesmo e se alguém reclamar acho que ganharei a permissão. obrigada pela ajuda. esta história toda serviu para me tornar uma especialista em pog (programação orientada a gambiarras). valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é uma idéia, porém de qualquer forma terei que dar os dados mastigados para o crystal e é ai que porca torce o rabo. Aquela consulta pequena só é a ponta do iceberg. Na realidade ela que está me dando mais trabalho pois o resto roda devagar mas sai em menos de dez minutos. O ruim é que assim, independente de apenas algumas parcelas de um contrato atenderem ao requisito "where dt_rcb >= '01-may-2008' and dt_rcb <= '31-may-2008'", tenho que trazer todas. Verei algum truque. Valeu. O crystal parece uma boa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.