SELECTS com UNION ALL

Dicas e truques sobre Oracle Reports Builder - modo gráfico ou modo caractere, ascii, arquivo .PRT, etc
Responder
HumbertoJr
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 8
Registrado em: Seg, 19 Set 2005 12:40 pm
Localização: CE

Pessoal,

alguém poderia me dar uma dica de como trabalhar com uma unica query ,composta por SELECTS diferentes(mas nas mesma tabela) unidos pelo operador UNION ALL.

tenho um aplicativo que faz um select pegando registros que sejam "debitos" ,depois outro select que pega registros que sejam "credito" ....ambos serão mostrados juntos ,por isso o UNION ALL. Queria saber também como pegar cada valor de cada linha e ir acumulando o valor de saldo pra proxima linha resultante.

Att,
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

O UNION ALL apenas junta dois selects em um só.
Se você colocar apenas UNION (sem o ALL), o Oracle faz um DISTINCT implícito.

É claro que o os 2 ou mais selects que você está "unindo" tem que ter o mesmo número de colunas e também o mesmo tipo!

Veja um exemplo:

Selecionar tudo

SQL> SELECT 'BONS' TIPO, ENAME, SAL
  2  FROM EMP
  3  WHERE SAL > 2000
  4     UNION ALL
  5  SELECT 'RUINS' TIPO, ENAME, SAL
  6  FROM EMP
  7  WHERE SAL <=2000
  8  /

TIPO  ENAME             SAL
----- ---------- ----------
BONS  JONES            2975
BONS  BLAKE            2850
BONS  CLARK            2450
BONS  SCOTT            3000
BONS  KING             5000
BONS  FORD             3000
RUINS SMITH             800
RUINS ALLEN            1600
RUINS WARD             1250
RUINS MARTIN           1250
RUINS TURNER           1500
RUINS ADAMS            1100
RUINS JAMES             950
RUINS MILLER           1300

14 rows selected.

SQL> 
Sobre a sua dúvida de pegar um valor ACUMULADO:
* Pode fazer no próprio SQL (veja o link abaixo)
http://www.glufke.net/oracle/viewtopic.php?t=530
* Pode fazer no Reports: Crie um campo "Summary Column" no mesmo grupo que você deseja o valor acumulado...
Escolha a propriedade FUNCTION --> SUM
SOURCE --> Escolha o campo que tem o valor
RESET AT --> Escolha Reports

Feito!!

:-o
Responder
  • Informação
  • Quem está online

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