Olá Pessoal, Bom Dia.
A minha dúvida é a seguinte :
TENHO 3 CAMPOS ( COD, NOME e DATA ) como gerar um SELECT onde o COD for igual e a DATA diferente gerar na mesma linha.
COD - NOME - DATA
01 - DANIEL - 01/01/2011
02 - JESSICA - 01/01/2011
01 - DANIEL - 01/02/2011
01 ...
01 ...
03 ...
SELECT : 01 - DANIEL - 01/01/2011 - 01/02/2011 ... caso houver mais ...
Desde já agradeço
SELECT COM DATAS DIFERENTES
- vitellozzi
- Rank: Programador Sênior
- Mensagens: 50
- Registrado em: Qua, 15 Set 2010 9:53 am
- Localização: Itatiba
-
- Moderador
- Mensagens: 1177
- Registrado em: Qui, 15 Out 2009 10:28 am
- Localização: Recife
uma solução seria fazer o uso de function, recebendo o parametro COD como entrada e então return um varchar2 cmo a string pronta....
com as datas concatenadas
com as datas concatenadas
-
- Rank: Programador Sênior
- Mensagens: 52
- Registrado em: Qua, 15 Out 2008 4:05 pm
- Localização: taquara-RS
cara,
se precisa ser no sql, testa ai! altera o nome para sua tabela
se for o 11g já tem pronto >>> LISTAGG
se precisa ser no sql, testa ai! altera o nome para sua tabela
SELECT COD,
NOME,
LTRIM(MAX(SYS_CONNECT_BY_PATH(DATA,','))
KEEP (DENSE_RANK LAST ORDER BY curr),',') AS datas
FROM (SELECT COD,
DATA,
nome,
ROW_NUMBER() OVER (PARTITION BY COD ORDER BY DATA) AS curr,
ROW_NUMBER() OVER (PARTITION BY COD ORDER BY DATA) -1 AS prev
FROM TESTE)
GROUP BY COD, NOME
CONNECT BY prev = PRIOR curr AND COD = PRIOR COD
START WITH curr = 1;
-
- Moderador
- Mensagens: 1177
- Registrado em: Qui, 15 Out 2009 10:28 am
- Localização: Recife
-
- Rank: Analista Júnior
- Mensagens: 74
- Registrado em: Seg, 06 Ago 2007 3:59 pm
- Localização: Campinas - SP
Eduardo Gomes
tem este código também:
talvez ajude....
abraços
select org,
substr(max(replace(sys_connect_by_path(empresa, '|'),
'|',
';' || chr(10) /*delimitador*/)) /*max para agrupar*/,
3 /*length do delimitador +1*/) string_concatenada /*substr para eliminar o delimitador no início do registro*/
from (select a.*,
row_number() over(partition by a.org order by a.org, a.empresa) row#
from (select o.nome org,
e.id_empresa || ' - ' || e.razao_social empresa
from bas_t_organizacoes o, bas_t_empresas e
where o.id_organizacao = e.id_organizacao) a)
start with row# = 1
connect by prior org = org
and prior row# = row# - 1
group by org
order by org;
abraços
- vitellozzi
- Rank: Programador Sênior
- Mensagens: 50
- Registrado em: Qua, 15 Set 2010 9:53 am
- Localização: Itatiba
Olá Pessoal,
Maravilha ... resolveu a primeira dica para mim !!!
Olha outra dica simples também que encontrei :
http://www.dbasupport.com/forums/showthread.php?t=57897
Obrigado a todos pela ajuda !!!
Maravilha ... resolveu a primeira dica para mim !!!
Olha outra dica simples também que encontrei :
http://www.dbasupport.com/forums/showthread.php?t=57897
Obrigado a todos pela ajuda !!!
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes