Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) XML Modelado


Vitor Alves

Pergunta

Bom dia galera!

Estou tentando fazer um exercício da faculdade aqui e está um pouco complicado, vamos lá!

Criei este banco:

create database hospital

set dateformat ymd -- definindo a data no padrão europeu

create table medico (
                        crm varchar(10)
                        constraint pk_medico primary key,
                        nome varchar(50) not null,
                        telefone char(13)
                        )

--inserindo médicos
insert into medico (crm, nome, telefone) values ('133.493-SP','Dr. Oswaldo Peru','(11)4013-1544')
insert into medico (crm, nome, telefone) values ('139.319-SP',' Dr. Marco Lima SILVA ','(15)2019-9548')
insert into medico (crm, nome, telefone) values ('217.453-RJ','Dr. ValDEMAR Rossi','(11)8267-4124')
O exercício pede isso:
/*Crie uma consulta no banco de dados que permita exportar os médicos para o sistema da ALLMED. 
De acordo com a documentação da ALLMED, o layout exigido para exportar os médicos é o seguinte:

<doctors>
<doctor llmd="133493" name="PERU, OSWALDO" phone="1140131544" />
<doctor llmd="139319" name="SILVA, MARCO" phone="1520199548" />
<doctor llmd="217453" name="ROSSI, VALDEMAR" phone="1182674124" />
</doctors>*/
Eu consegui montar isto:
select
  crm as llmd,
  UPPER(left (substring(nome,charindex(' ',nome,1),99),0)+','
  +substring(nome,charindex(' ',nome,2),99)) as name,
  SUBSTRING(telefone,2,2)+ SUBSTRING(telefone,5,4)+ SUBSTRING(telefone,5,4) as phone
from
  medico as doctor
for xml auto, root('doctor')

O que está me matando é a inversão dos nomes ali no meio, eu não sei nem como inverter e muito mesmo como excluir o nome do meio, como é o caso do MARCO LIMA SILVA.

Desde já agradeço qualquer ajuda!

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Segue solução.

SELECT LEFT(crm,3)+Substring(crm,5,3) AS llmd, 
       REVERSE(SUBSTRING(LTRIM(REVERSE(UPPER(SUBSTRING(LTRIM(nome),1,LEN(nome))))),1,
       (CHARINDEX(' ',(LTRIM(REVERSE(Upper(SUBSTRING(LTRIM(nome),1,LEN(nome)))))))))) 
       + ', '+( UPPER(SUBSTRING((SUBSTRING(LTRIM(nome),5,LEN(nome))),1, 
       CHARINDEX(' ',(SUBSTRING(LTRIM(nome),5,LEN(nome))))))) AS name, 
       SUBSTRING(telefone,2,2)+SUBSTRING(telefone,5,4)+SUBSTRING(telefone,10,4) AS phone 
FROM   medico AS doctors 
FOR xml auto, root('doctors')

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...