Thursday, March 21, 2013

คำสั่ง SQL ให้คะแนนคนที่คุมเบาหวานความดันได้ดี 20 อันดับแรก /พี่เล็ก

นั่งงม SQL Code มา 4 ช.ม. สุดได้ก็ได้คำตอบตามนี้
โจทย์ก็คือ อยากที่จะให้คะแนน ผู้ป่วยเบาหวานในคลินิค อ่ะ ว่าในรอบ 3 เดือนที่ผ่านมา คุมความดันได้กี่ครั้ง คุมระดับน้ำตาลได้กี่ครั้ง เป็น Good visit กี่ครั้ง  
หลังจากพลัดผ่อนมานานจนถึง death line 2013-03-21 23.59 น.  

ได้คำสั้ง SQL ดังนี้
SELECT v.hn,v.vstdate,o.bps,o.bpd,o.fbs,f.dtx1,
sum(CASE WHEN o.bps BETWEEN "90" and "130" THEN 1 ELSE 0 END) AS bpsgood,
sum(CASE WHEN o.fbs BETWEEN "70" and "140" THEN 1 ELSE 0 END) AS fbsgood,
sum(CASE WHEN f.dtx1 BETWEEN "70" and "140" THEN 1 ELSE 0 END) AS dtxgood,
count(DISTINCT v.vn) as visitgood,
(sum(CASE WHEN o.bps BETWEEN "90" and "130" THEN 1 ELSE 0 END) +
sum(CASE WHEN o.fbs BETWEEN "70" and "140" THEN 1 ELSE 0 END) + 
sum(CASE WHEN f.dtx1 BETWEEN "70" and "140" THEN 1 ELSE 0 END) ) AS TOTAL
FROM vn_stat v
LEFT OUTER JOIN clinicmember c on c.hn=v.hn
LEFT OUTER JOIN person p on p.patient_hn=v.hn
LEFT OUTER JOIN opdscreen o on o.vn=v.vn
LEFT OUTER JOIN opdscreen_fbs f on f.vn=v.vn
WHERE v.vstdate BETWEEN "2013-01-01" and "2013-03-31" and c.clinic = "001"  
and c.clinic_member_status_id = "1" and c.discharge = "N"  and p.village_id <> "1" 
and (o.bmi <> "" or o.bmi is not NULL)
and o.bpd <> "0" and (o.fbs <> "0" or dtx1 <> "0")
GROUP BY v.hn
ORDER BY TOTAL DESC
LIMIT 20

ขอขอบคุณ คุณอภิศักดิ์ สำหรับคำแนะนำเรื่อง SQL Code 
#keepper


0 ความคิดเห็น:

Post a Comment

 

Sample Text

111

Sample Text