twitterfacebookgoogle pluslinkedinrss feedemail

quinta-feira, 8 de março de 2012

Ordernação com Row_Number() - Order By


Precisava utilizar uma query, onde limitasse o valor pelo rownum da linha.
Acontece que quando aplicasse o order by, ele aplica primeiro o rownum e depois faz a ordernação.
Assim não conseguia a numeração correta para limitar o retorno da linha.
Pesquisando achei a seguinte utilização do ROW_NUMBER() OVER (ORDER BY campo DESC) .
Utilizando esta função com o "over", ele aplica o row_number durante a ordernação.
Segue um exemplo:

SELECT last_name FROM
(SELECT last_name, ROW_NUMBER() OVER (ORDER BY last_name) R FROM employees)
WHERE R BETWEEN 51 and 100;


Mais informações no Link:

terça-feira, 6 de março de 2012

Selects Hierárquicos Oracle

Utilizamos este recurso quando temos um relacionamento de pai-filho na mesma tabela.
Com estes operadores/funções, fica mais fácil e com uma boa performance o retorno de algumas consultas.
Como exemplo uma consulta de um Menu, Hierarquia de Pessoas de uma empresa, processos encadeados.

Exemplo de utilização:

select level
,cd_atendente_razao
,nm_atendente_razao
,tp_usage_system
,cd_atendente_razao_high
from tbl_atendente
start with cd_atendente_razao = 8
connect by prior cd_atendente_razao_high = cd_atendente_razao
order by level desc;

Utilizamos os operadores/funções:
start with -> Define qual o primeiro registro será buscado.
connect by prior -> Clausula que faz relacionamento entre os níveis.



 

Sobre o Blog

Neste blog irei compartilhar as minhas experiências e observações. Os temas serão variados, mas com ênfase em tecnologia. Inscreva-se nos nossos canais para receber atualizações.