Como montar esse Select?

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
wilhame
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Sex, 09 Set 2005 2:57 pm
Localização: Vila Velha - ES

Bom Colegas.

A questão é o seguinte: Preciso montar um select que Mostre qual a sequencia do registro em relacao aos demais.

Os Campos Chaves da Tabelas são:
Numero1, Numero2, Numero3, Data de Lancamento

O que preciso: De acordo com os Campos 1,2,3 Preciso criar uma nova coluna mostrando qual o nº do registro de acordo com o Ano e mês em relacao a data de lancamento

Numero1 | Numero2 | Numero3 | Data | Nova Coluna
----------------------------------------------------------------------------------
1 -- 1 -- 1 -- 20/08/07 15:45 -- 1
1 -- 1 -- 2 -- 21/08/07 16:20 -- 2
1 -- 1 -- 3 -- 21/09/07 15:30 -- 1
1 -- 1 -- 4 -- 21/09/07 18:00 -- 2
1 -- 1 -- 5 -- 21/09/07 18:01 -- 3

Bom o resultado que espero é esse.

alguém tem ideia de como posso fazer isso???
Agradeço a todos por toda a atenção...
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Isso você vai conseguir com a função analítica ROW_NUMBER.
Leia sobre isso aqui no forum, deve ter vários exemplos.
Se o seu banco não suporta funções analíticas, talvez o ideal seja criar uma procedure que faça o serviço.

Abaixo, deixo um:

Selecionar tudo

SELECT ename "Ename", deptno "Deptno", sal "Sal",
  SUM(sal)
    OVER (ORDER BY deptno, ename) "Running Total",
  SUM(SAL)
    OVER (PARTITION BY deptno
          ORDER BY ename) "Dept Total",
  ROW_NUMBER()
    OVER (PARTITION BY deptno
          ORDER BY ENAME) "Seq"
FROM emp
ORDER BY deptno, ename
/

Ename  Deptno    Sal Running Total Dept Total  Seq
------ ------ ------ ------------- ---------- ----
CLARK      10   2450          2450       2450    1
KING            5000          7450       7450    2
MILLER          1300          8750       8750    3

ADAMS      20   1100          9850       1100    1
FORD            3000         12850       4100    2
JONES           2975         15825       7075    3
SCOTT           3000         18825      10075    4
SMITH            800         19625      10875    5

ALLEN      30   1600         21225       1600    1
BLAKE           2850         24075       4450    2
JAMES            950         25025       5400    3
MARTIN          1250         26275       6650    4
TURNER          1500         27775       8150    5
WARD            1250         29025       9400    6
Responder
  • Informação
  • Quem está online

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