Pular para o conteúdo
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #96957
    Avatar de superbvmsuperbvm
    Participante

      Bom dia galera,

      Preciso trazer os pacientes reicidentes de internação, ou seja, que tiveram alta e foram internados novamente menos de 15 dias depois da alta…

      O select q traz os atendimentos dos pacientes é esse…

      select cd_paciente, dt_atendimento, dt_alta
      from atendime where tp_atendimento = ‘I’

      Alguém poderia me ajudar por favor? Grato desde já.

      att,

      #96958
      Avatar de IshiiIshii
      Participante

        Olá,

        Não entendi direito a sua dúvida mas seria algo assim:


        select cd_paciente, dt_atendimento, dt_alta
        from atendime where tp_atendimento = 'I' and sysdate - dt_alta <= 15

        Se os campos data forem tipo Date mesmo, senão for deverá ter uma conversão para tipo Date

        []s Ishii

        #96959
        Avatar de superbvmsuperbvm
        Participante

          Olá amigo, obrigado pela resposta, seria quase isso, só que no lugar da sysdate seria a última data de alta daquele paciente. Entendeu?

          [quote=”Ishii”:2ybghdcy]Olá,

          Não entendi direito a sua dúvida mas seria algo assim:


          select cd_paciente, dt_atendimento, dt_alta
          from atendime where tp_atendimento = 'I' and sysdate - dt_alta <= 15

          Se os campos data forem tipo Date mesmo, senão for deverá ter uma conversão para tipo Date

          []s Ishii[/quote]

          #96960
          Avatar de IshiiIshii
          Participante

            Olá,

            Desculpe-me mas ainda não entendi, acho melhor você colocar qual o resultado esperado e qual resultado você está encontrando atualmente com o SQL atual, acho que assim fica mais fácil entender a sua necessidade. Por exemplo: a dt_atendimento seria então a outra condição de data de internação?

            []s Ishii

            #96961
            Avatar de superbvmsuperbvm
            Participante

              Preciso trazer os pacientes cuja a data do atendimento menos a data da última alta seja menor do que 15 dias.
              Cheguei até aqui, mas está dando erro.

              select cd_paciente, dt_atendimento, dt_alta
              from atendime
              where tp_atendimento = 'I'
              and (select dt_alta from atendime where tp_atendimento = 'I' and dt_alta is not null order by dt_alta desc) - dt_atendimento <= 15
              and dt_alta is not null

              [quote=”Ishii”:64k5bn0d]Olá,

              Desculpe-me mas ainda não entendi, acho melhor você colocar qual o resultado esperado e qual resultado você está encontrando atualmente com o SQL atual, acho que assim fica mais fácil entender a sua necessidade. Por exemplo: a dt_atendimento seria então a outra condição de data de internação?

              []s Ishii[/quote]

              #96968
              Avatar de IshiiIshii
              Participante

                Olá,

                Então acho que seria assim:


                select cd_paciente, dt_atendimento, dt_alta from (
                select cd_paciente, dt_atendimento,
                max(dt_atendimento)
                over (partition by cd_paciente) dt_ult_atend,
                count(cd_paciente)
                over (partition by cd_paciente, dt_atendimento ) cnt_pac from atendime )
                where tp_atendimento = 'I'
                and cnt_pac = 1
                and dt_alta - dt_ult_atend < 15
                and dt_alta is not null

                Não testei mas deve ser isso mesmo…

                Qualquer coisa coloca o erro e o resultado aqui que analisamos conjuntamente.

                []s Ishii

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.
              plugins premium WordPress