2014-11-12 4 views
1

환자가 데이터베이스에서 약속을 지키기가 늦었을 때 해결하고 싶습니다. - 환자 수 mySQL의 진료소에있는 환자의 약속 날짜 사이의 시간 차이 계산

  • APPT - 날짜 환자에 참석 클리닉
  • Next_appt - 할당 된 다음 약속 날짜
    1. PT :

      나는 열이 병원에서 데이터 테이블이

      다음과 같이 보입니다.

      Pt Appt  Next_appt 
      12 2013-04-22 2013-05-21 
      12 2013-05-20 2013-07-15 
      57 2010-06-08 2010-07-05 
      57 2010-08-03 2010-10-19 
      127 2009-02-24 2009-06-23 
      127 2009-04-20 2009-05-11 
      

      따라서 환자 12 - 그는 2013-05-21에 next_appt 날짜가 지정되었고 2013-05-20 (일찍 1 일)에 참석했습니다

      Next_appt 열을 하나씩 내림 쉬울 것입니다. 그 다음 두 개를 빼십시오. 그런 다음 날짜가 다른 환자에게 해당하므로 문제가 생길 것입니다.

      데이터베이스에 약 20,000 명의 환자 (!)가 있습니다.

      누군가 내게 제안을 줄 수 있는지 궁금합니다.

    +0

    내가 아니라고 100 % 확인합니다. '예상 결과'를 추가 할 수 있습니까? – David162795

    답변

    0

    이 시도 감사 : 당신의 설명에 대한

    select 
        t1.*, 
        case sign(t2.appt - t1.next_appt) 
         when 0 then 'on time' 
         when 1 then 'late' 
         when -1 then 'early' end 
    from 
        your_table t1 
    left join 
        your_table t2 
    on 
        t1.pt = t2.pt -- shift down with pt as join condition 
    and t1.appt < t2.appt