E ai Galera!
to com um problema, não sei se da pra fazer isso numa query mas o problema é o seguinte... estou montando uma query para pegar os dados de um médico, a tabela é PRESTADOR... então na query eu seleciono nome, idade, endereco, etc, etc e especialidade. Porém, 1 médico pode ter N especialidades ... para fazer essa relação e pegar a descrição da especialidade tem a tabela ESP_MED onde tem o codigo do prestador e codigo da especialidade... e na tabela ESPECIALIDADE onde tem a descrição.
Rodando a query com esses relacionamentos, a quantidade de registros que vai retornar serã igual a quantidade de especialidades.... porém preciso que retorne apenas 1 registro por médico...
Tem como fazer algo do tipo concatenar para aparecer todas as especialidades na mesma linha separadas por vírgula por exemplo ???
Valeu!!
Concatenação
-
- Rank: Programador Sênior
- Mensagens: 50
- Registrado em: Ter, 10 Abr 2007 11:08 am
- Localização: São Paulo - SP
M. Renan
Então brother...
Eu não estou desenvolvendo em forms... e nem reports... É uma ferramenta para desenvolvimento de relatorios que não permite pl/sql... ela trabalha com views...
Será que tem outra forma de fazer??
Abraço
Eu não estou desenvolvendo em forms... e nem reports... É uma ferramenta para desenvolvimento de relatorios que não permite pl/sql... ela trabalha com views...
Será que tem outra forma de fazer??
Abraço
-
- Rank: Programador Júnior
- Mensagens: 25
- Registrado em: Qua, 19 Dez 2007 9:10 am
- Localização: Rio de Janeiro RJ
Achei uma forma de fazer também , aqui deu certo. Segue o link:
http://www.oracle.com/technology/oramag ... 01606.html
http://www.oracle.com/technology/oramag ... 01606.html
- dr_gori
- 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
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Show de bola.
Vou colocar aqui o texto pra não perdermos essa dica:
Vou colocar aqui o texto pra não perdermos essa dica:
Tip of the Week
Tip for Week of October 16, 2006
Concatenate Multiple Column Records
This tip comes from Galina Petrenko, a Sr. Programmer Analyst at Harte-Hanks Inc. in Langhorne, PA.
In Oracle9i Database and later, it's possible to rotate the vertical presentation of data into horizontal presentation. The following demonstrates a simple way (without XML parsers or PL/SQL stored structures) to convert vertical presentation into horizontal presentation; it will concatenate multiple column records into a single string.
-- Temporary Data
create table TMP_TEST ( ID NUMBER, NumVal NUMBER, STRVAL VARCHAR2(32) );
insert into TMP_TEST values(1, 100, 'Hello');
insert into TMP_TEST values(1,-100, 'World');
insert into TMP_TEST values(2, 1, 'Concatenate');
insert into TMP_TEST values(2, 2, 'In String');
insert into TMP_TEST values(2, 3, 'using Connect By');
insert into TMP_TEST values(2, 4, 'Using SYS_CONNECT_BY_PATH');
commit;
-- Check Vertical Data Presentation
select * from TMP_TEST;
ID NUMVAL STRVAL
---------- ---------- --------------------------------
1 100 Hello
1 -100 World
2 1 Concatenate
2 2 In String
2 3 using Connect By
2 4 Using SYS_CONNECT_BY_PATH
6 rows selected.
-- Get Concatenated String with Specific Delimiter
def Delimiter=" "
SELECT
ID,
SUBSTR(MAX(REPLACE(
SYS_CONNECT_BY_PATH(STRVAL, '/')
,'/','&Delimiter')),2) Concatenated_String
FROM (
select A.*,
row_number() OVER (Partition by ID order by ID) ROW#
from TMP_TEST A)
START WITH ROW#=1
CONNECT BY PRIOR ID=ID AND PRIOR row# = row# -1
GROUP BY ID
;
ID CONCATENATED_STRING
---------- -----------------------------------------------------------------
1 Hello World
2 Concatenate In String using Connect By Using SYS_CONNECT_BY_PATH
-- More Generic:
def Column_Sort_Name=ID
def Column_Name=NumVal
def Delimiter="|"
SELECT
ID,
SUBSTR(MAX(REPLACE(
SYS_CONNECT_BY_PATH( &Column_Name , '/')
,'/','&Delimiter')),2) Concatenated_String
FROM (
select
A.*,
row_number() OVER (Partition by ID order by &Column_Sort_Name ) ROW#
from TMP_TEST A)
START WITH ROW#=1
CONNECT BY PRIOR &Column_Sort_Name = &Column_Sort_Name
AND PRIOR row# = row# -1
GROUP BY &Column_Sort_Name
;
ID CONCATENATED_STRING
---------- -----------------------------------------------------------------
1 100|-100
2 1|2|3|4
def Delimiter=","
ID CONCATENATED_STRING
---------- -----------------------------------------------------------------
1 100,-100
2 1,2,3,4
-
- Rank: DBA Pleno
- Mensagens: 264
- Registrado em: Dom, 19 Ago 2007 8:18 pm
- Localização: Ribeirão Preto - SP
Lucas de Souza
OCA Developer
Analista de sistemas
OCA Developer
Analista de sistemas
Pessoal, desculpa a minha ignorancia, mais alguém poderia me explicar o que fáz essa linha ?
mais precisamente, o que é essa row_number(), o que é esse OVER e o que diabos faiz esse Partition =D
se alguém puder me ajudar =D
grato...
row_number() OVER (Partition by ID order by &Column_Sort_Name )
se alguém puder me ajudar =D
grato...
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes