Então, como já foi dito antes, estude os diversos tipos de JOIN que,
pela sua explicação, me parece que você desconhece, e faça uma única
consulta.

Osvaldo,

Em um contexto de junção eu faria isso:

SELECT
   s.*,  -- Registros do servico
   r.*,  -- Registros da Remocao
   st.ocorrencia AS sintomatologia, -- sintomatologia
   o.ocorrencia AS orientacao -- orientacao

FROM servico s

 -- Liga remocao quando existir
 LEFT JOIN servico_agenda_remocao r
  ON (s.num_servico = r.num_servico)

 --Liga orientacao quando existir
 LEFT JOIN servico_ocorrencias AS o
  ON (s.num_servico = o.num_servico AND o.referencia = '00')


 --Liga sintomatologia quando existir
 LEFT JOIN servico_ocorrencias AS st
  ON (s.num_servico = st.num_servico AND st.referencia = '01')


 --Liga quadro clinico quando existir
 LEFT JOIN servico_ocorrencias AS qc
  ON (s.num_servico = qc.num_servico AND qc.referencia = '04')

WHERE s.num_servico = 227571


Isso resolve.
Minha intenção com uma função seria avaliar a classificação do serviço (Atendimento ou Remoção)
e buscar apenas o que for pertinente:

Atendimento:
Possui 1 registro em serviço, 1 registro de sintomatologia e 1 registro de orientacao
Remocao:
Possui 1 registro em serviço, 1 registro em servico_remocao e 1 registro de quadro clinico


Finalmente, o cerne da minha pergunta (vide título) seria da possibilidade de concatenar variaveis do tipo record e retorná-las. Nem entrei no contexto do negócio porque isso é irrelevante pelo texto que submeti à lista.

SELECT 1 as um, 2 as dois INTO rec1       // Um retorno de única linha
SELECT 3 as tres, 4 as quatro INTO rec2  // Um retorno de única linha

concatenação rec1 X rec2:

um dois tres quatro
1       2     3       4


Att Carlos









_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a