Boa tarde Rogério,

No 11gR2 você pode usar a função LISTAGG, faça uma busca no nosso amigo
Google que você encontra exemplos.
Pra versões anteriores aí você vai ter um pouco mais de trabalho e tem
várias formas diferentes de fazer. Uma delas
é usando a cláusula MODEL, segue um exemplo em cima do esquema HR:

WITH TAB_TEXTO AS (
  SELECT MANAGER_ID, FIRST_NAME, JOB_ID,
  ROW_NUMBER() OVER (PARTITION BY MANAGER_ID ORDER BY EMPLOYEE_ID) X
  FROM HR.EMPLOYEES
  WHERE MANAGER_ID IS NOT NULL),
TAB_TEXTO2 AS (
  SELECT T.*, MAX(X) OVER (PARTITION BY MANAGER_ID) Y
  FROM TAB_TEXTO T),
TAB_TEXTO3 AS (
  SELECT MANAGER_ID,
    TRIM(LEADING ',' FROM C1) C1,
    TRIM(LEADING ',' FROM C2) C2
   FROM TAB_TEXTO2
  *MODEL*
  PARTITION BY (MANAGER_ID)
  DIMENSION BY (X)
  MEASURES (FIRST_NAME, JOB_ID, Y,
            CAST(NULL AS VARCHAR2(4000))  AS C1,
            CAST(NULL AS VARCHAR2(4000))  AS C2)
  RULES ITERATE (100)  UNTIL (ITERATION_NUMBER+1 >= Y[1])
  (   C1[1] = C1[1] || ',' || FIRST_NAME[ITERATION_NUMBER+1],
      C2[1] = C2[1] || ',' || JOB_ID[ITERATION_NUMBER+1]
  ))
SELECT * FROM TAB_TEXTO3 WHERE C1 IS NOT NULL;

Mas como eu disse, essa é somente uma das formas, outra forma é você
construir funções em PL/SQL, e assim por diante.

Abraços,
Ricardo Hideyuki Tajiri
LaRCom - FEEC - UNICAMP


Em 9 de agosto de 2011 14:13, Lo Bello <rogerio...@gmail.com> escreveu:

> **
>
>
> Pessoal,
>
> tenho uma dúvida, existe algum função que retorne todos os valores de um
> campo não agrupado.
>
> Exemplo:
> TABELA_CLIENTE tem os campos -> CODIGO, NOME, VALOR
>
> quero fazer um SELECT mais ou menos assim:
>
> SELECT FUNCAO(CODIGO) AS CODIGOS, NOME, SUM(VALOR) AS TOTAL FROM
> TABELA_CLIENTE GROUP BY NOME
>
> o resultado desse SELECT tem que me retornar uma linhas me trazendo o
> seguinte
> CODIGOS = 1, 2, 3
> NOME = JOSÉ
> TOTAL = 1000,00
>
> Resumindo preciso de uma função que me retorne todos os códigos referente a
> esse agrupamento.
>
> Se tenho 3 "JOSÉ", me traga o TOTAL desses 3 josé, e o código desses 3
> JOSÉS.
>
> Rogério
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


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



------------------------------------

--------------------------------------------------------------------------------------------------------------------------
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>http://www.oraclebr.com.br/  
------------------------------------------------------------------------------------------------------------------------
 Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    oracle_br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html


Responder a