วันอังคาร, สิงหาคม 30, 2548

เรื่องของ SQL ตอนที่ 1 เพิ่มเติมอีกหน่อยนึง

ได้รับ Requirement กลับมาเกี่ยวกับ SQL ตอนที่ 1 ว่าถ้าหากต้องการดึงเอาวันที่มารับบริการ และอายุออกมาด้วยล่ะ จะทำได้อย่างไร ก็พยายามไปค้นคว้ามารับใช้ให้จนได้แม้ว่าจะหินโคตรๆ

ขอย้อนกลับไปที่ SQL ชุดนั้นอีกครั้งแล้วกันเผื่อคนที่พึ่งเข้ามาอ่านครั้งแรกจะได้ปะติดปะต่อเรื่องราวได้

SELECT

t_patient.patient_hn AS hn

,pat_address.patient_name AS name

,pat_address.address AS address

,t_patient.patient_pid AS pid

FROM

t_patient,pat_address,t_visit,t_diag_icd10

WHERE

t_patient.patient_hn = t_visit.visit_hn

AND t_patient.patient_hn = pat_address.patient_hn

AND t_visit.t_visit_id = t_diag_icd10.diag_icd10_vn

AND t_visit.f_visit_type_id='0'

AND t_visit.f_visit_status_id='3'

AND (t_diag_icd10.diag_icd10_number LIKE 'E10%'

OR t_diag_icd10.diag_icd10_number LIKE 'E11%'

OR t_diag_icd10.diag_icd10_number LIKE 'E14%'

OR t_diag_icd10.diag_icd10_number LIKE 'E15%')
AND (SUBSTRING(t_visit.visit_financial_discharge_time from 1 for 10) between '2548-01-01' and '2548-03-31')

AND t_patient.patient_hn NOT IN

( /* เริ่มต้น */
SELECT

DISTINCT(t_patient.patient_hn)

FROM

t_patient

,t_visit

,t_diag_icd10

WHERE

t_patient.patient_hn = t_visit.visit_hn

AND t_visit.t_visit_id = t_diag_icd10.diag_icd10_vn

AND t_visit.f_visit_type_id='0'

AND t_visit.f_visit_status_id='3'

AND (t_diag_icd10.diag_icd10_number LIKE 'E10%'

OR t_diag_icd10.diag_icd10_number LIKE 'E11%'

OR t_diag_icd10.diag_icd10_number LIKE 'E14%'

OR t_diag_icd10.diag_icd10_number LIKE 'E15%')

AND (SUBSTRING(t_visit.visit_financial_discharge_time from 1 for 10) between '2548-01-01' and '2548-02-28')

) /* สิ้นสุด */

GROUP BY

hn

,pat_address.patient_name

,pat_address.address

,t_patient.patient_pid

ORDER BY hn


อยากได้วันที่ที่มารับบริการก็เพิ่มเข้าไปได้ครับ เอาเป็นก่อนหน้า HN ดีไหม





แหล่งความรู้และอ้างอิง



แสดงความคิดเห็น
Powered for by Blogger Templates free hit counter code
Copyright ? 2008-2009 Uthai Lueadnakrop. All Rights reserved