Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia
Estou fazendo um select de uma tabela de traz varias vezes o mesmo produto, gostaria criar uma coluna e numerar as linhas conforme o produto.
O select no caso é esse:
select
tf.produto,tf.descritivo,
e.sigla,v.ano,
v.qtde_jan,v.qtde_fev,v.qtde_mar,v.qtde_abr,v.qtde_mai,v.qtde_jun,
v.qtde_jul,v.qtde_ago,v.qtde_set,v.qtde_out,v.qtde_nov,v.qtde_dez
from vw_tabela_fornecedor tf,
vw_vendas_colunas v,
empresas e
where tf.fornecedor = :FORNECEDOR
and tf.produto = v.produto
and v.empresa = e.id
and v.ano between :ANOI and :ANOF
order by tf.descritivo,v.ano desc, v.empresa
Gostaria de cria uma coluna chamada ordem conforme o tf.produto, ficaria mais ou menos assim
ordem Produto Descritivo
1 17 Teste
1 17 Teste
2 24 Arquivo
2 24 Arquivo
2 24 Arquivo
3 62 Base
4 82 Analise
4 82 Analise
Alguma ideia de como posso fazer isso?
Obrigado
Esse link que você passou na abre.
A ordem é pelo descritivo do produto, é como criar blocos com produtos iguais.
Não sei se ficou muito confuso a explicação.
http://www.oracle-base.com/articles/misc/analytic-functions.php
http://www.oracle-base.com/articles/misc/rank-dense-rank-first-last-analytic-functions.php
tente
select
tf.produto,tf.descritivo,
e.sigla,v.ano,
v.qtde_jan,v.qtde_fev,v.qtde_mar,v.qtde_abr,v.qtde_mai,v.qtde_jun,
v.qtde_jul,v.qtde_ago,v.qtde_set,v.qtde_out,v.qtde_nov,v.qtde_dez,
RANK() OVER (PARTITION BY tf.produto ORDER BY tf.produto) seq_prod
from vw_tabela_fornecedor tf,
vw_vendas_colunas v,
empresas e
where tf.fornecedor = :FORNECEDOR
and tf.produto = v.produto
and v.empresa = e.id
and v.ano between :ANOI and :ANOF
order by tf.descritivo,v.ano desc, v.empresa
Mas a ordem é baseada em que ?
Dê uma olhada nas Analytic Funcions , como RANK.todavia.