Obrigada Marcos! 5 Estrelas!



________________________________
De: Marcos de Lima Takayas <taka...@embratel.net.br>
Para: elisn...@yahoo.com
Enviadas: Quinta-feira, 5 de Fevereiro de 2009 15:54:49
Assunto: [oracle_br] Query Complicada

Bom dia Elis,

Veja se isso te atende (ele só faz uma chamada a tabela):

SQL> select tbl_desc.descritor,
2         decode(descritor,'A',tbl_conta.countA,tbl_conta.countB)
3  from
4  (
5  select sum(decode(A,'S',1,0)) as countA,
6         sum(decode(B,'S',1,0))
7  as countB
8  from tabela
9  ) tbl_conta,
10  (select 'A' as descritor from dual
11   union all
12   select 'B' as descritor from dual) tbl_desc
13  ;

DESCRITOR                        DECODE(DESCRITOR,'A',TBL_CONTA
-------------------------------- ------------------------------
A                                                             2
B                                                             2


Plano de Execução
----------------------------------------------------------
0      SELECT STATEMENT Optimizer=CHOOSE (Cost=6 Card=2 Bytes=58)
1    0   MERGE JOIN (CARTESIAN) (Cost=6 Card=2 Bytes=58)
2    1     VIEW (Cost=2 Card=1 Bytes=26)
3    2       SORT (AGGREGATE)
4    3         TABLE ACCESS (FULL) OF 'TABELA' (Cost=2 Card=82 Byt
        es=492)

5    1     VIEW (Cost=4 Card=2 Bytes=6)
6    5       UNION-ALL
7    6         TABLE ACCESS (FULL) OF 'DUAL' (Cost=2 Card=1)
8    6         TABLE ACCESS (FULL) OF 'DUAL' (Cost=2 Card=1)


Elis Azevedo Nery escreveu:
>
> Olá Pessoas!
>
> Será que alguém tem uma solução para esta query que eu quero fazer?
> Tenho a tabela assim:
>
> A B
> ----------
> S S
> S N
> N S
>
> Preciso contar as linhas com 'S' para cada coluna e gostaria de obter o 
> resultado numa tabela assim:
>
> Coluna Count
> --------------------
> A 2
> B 2
>
> Com union eu consigo, mas não queria ler a tabela 2 vezes. Tentei com decode, 
> mas não dá porque ele conta só uma vez, para a primeira informação que lê.
> Não vale ser com procedimento, preciso do resultado num Select, será que é 
> possível?
>
> Obrigada
> Elis
>
> Veja quais são os assuntos do momento no Yahoo! +Buscados
> http://br.maisbuscados.yahoo.com <http://br.maisbuscados.yahoo.com>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 

-- Marcos Takayas
Administrador de Banco de Dados
Embratel - NOC GER REDES E SERVIÇOS IP - TRD805
2121-2706
9398-4193


      Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

[As partes desta mensagem que não continham texto foram removidas]

Responder a