BMS-HOSxP Community
HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: rimkong ที่ มิถุนายน 16, 2008, 13:33:26 PM
-
รบกวนสอบถามเรื่อง คำสั่ง SQL กับอาจารย์ทุกท่านด้วยครับ
คือผมต้องการทำรายงาน Pt ที่เป็นความดันโดยแยกเป็นแต่ละตำบล
ผมลองทำแล้วปรากฎว่า ได้ชื่อ และ HN ซ้ำมา ไม่แน่ใจว่าต้องใช้คำสั่งใด
ในการตัดชื่อ และ HN ซ้ำออก หรือท่านใดมีรายงานแบบนี้ ก็รบกวนขอด้วยนะครับ
-
ลองอันนี้ดูครับ
select distinct o.hn,p.pname,p.fname,p.lname,vs.age_y,p.moopart,p.tmbpart
from vn_stat vs
left outer join patient p on p.hn = vs.hn
where vs.vstdate between '2008-01-01' and '2008-05-10'
and p.moopart in ("4")
and p.tmbpart in ("01")
and ( (vs.pdx = "I10")
or (vs.dx0 = "I10")
or (vs.dx1 = "I10")
or (vs.dx2 = "I10")
or (vs.dx3 = "I10")
or (vs.dx4 = "I10")
or (vs.dx5 = "I10"))
group by o.hn,p.pname,p.fname,p.lname,vs.age_y,p.moopart,p.tmbpart
-
ขอบคุณมากครับ คุณ pop_hosxp แต่ก็ยังมีซ้ำมาอยู่นะครับแต่ก็ไม่มาก
วิทยายุทธของท่าน pop ช่างล้ำเลิศจริง ๆ ข้าน้อยขอนับถือ
-
ไม่ขนาดนั้นหรอกครับ ไม่งั้นจะยังคงมีข้อมูลที่ซ้ำอยู่เหรอครับ
;D
จริง ๆ แล้ว การซ้ำน่าจะเกิดจากการหาข้อมูลที่เป็นแบบข้ามปี ทำให้อายุผู้ป่วยคนเดียวกัน ไม่เท่ากัน ถ้าจะให้ดีน่าจะเอาวันเกิดมาหาอายุจะได้ไม่ซ้ำอีก ครับ
ปล.ตอนนี้ใช้ pocket pc ตอบยากชะมัด :D
-
จริง ๆ แล้ว การซ้ำน่าจะเกิดจากการหาข้อมูลที่เป็นแบบข้ามปี ทำให้อายุผู้ป่วยคนเดียวกัน ไม่เท่ากัน ถ้าจะให้ดีน่าจะเอาวันเกิดมาหาอายุจะได้ไม่ซ้ำอีก ครับ
:'(จะต้องเพิ่มแก้ไขคำสั่งยังไงครับ คุณ pop_hosxp
-
select distinct o.hn,p.pname,p.fname,p.lname,vs.age_y,p.moopart,p.tmbpart
from vn_stat vs
left outer join patient p on p.hn = vs.hn
where vs.vstdate between '2008-01-01' and '2008-05-10'
and p.moopart in ("4")
and p.tmbpart in ("01")
and ( (vs.pdx = "I10")
or (vs.dx0 = "I10")
or (vs.dx1 = "I10")
or (vs.dx2 = "I10")
or (vs.dx3 = "I10")
or (vs.dx4 = "I10")
or (vs.dx5 = "I10"))
group by o.hn,p.pname,p.fname,p.lname,vs.age_y,p.moopart,p.tmbpart
o.hn
??? ??? ???
-
select distinct vs.hn,p.pname,p.fname,p.lname,vs.age_y,p.moopart,p.tmbpart
from vn_stat vs
left outer join patient p on p.hn = vs.hn
where vs.vstdate between '2008-01-01' and '2008-05-10'
and p.moopart in ("4")
and p.tmbpart in ("01")
and ( (vs.pdx = "I10")
or (vs.dx0 = "I10")
or (vs.dx1 = "I10")
or (vs.dx2 = "I10")
or (vs.dx3 = "I10")
or (vs.dx4 = "I10")
or (vs.dx5 = "I10"))
group by vs.hn,p.pname,p.fname,p.lname,vs.age_y,p.moopart,p.tmbpart
vs.hn
;D ;D ;D ;D ;D
-
select p.hn,p.pname,p.fname,p.lname,v.age_y,p.moopart,p.tmbpart
from patient p
left join vn_stat v on v.hn = p.hn
left join ovstdiag o on o.vn=v.vn
where v.vstdate between '2008-1-1' and '2008-1-31'
and p.moopart='4'
and p.tmbpart='01'
and o.icd10 between 'i10' and 'i1599'
group by p.hn
order by p.hn
**ระวังไม่ระบุรหัสจังหวัดจะเป็นของจังหวัดอื่นได้ ถ้ามีข้อมูล
**ระวัง moopart ระบุอย่างไรบ้าง
-
ขอโทษทีครับ ลืมแก้ตรงที่คุณ SrWood บอกครับ พอดีไม่ได้อยู่ที่ รพ. เลยยังไม่ได้ลอง run ในสายฟ้าก่อนครับ :P
-
จริง ๆ แล้ว การซ้ำน่าจะเกิดจากการหาข้อมูลที่เป็นแบบข้ามปี ทำให้อายุผู้ป่วยคนเดียวกัน ไม่เท่ากัน ถ้าจะให้ดีน่าจะเอาวันเกิดมาหาอายุจะได้ไม่ซ้ำอีก ครับ
:'(จะต้องเพิ่มแก้ไขคำสั่งยังไงครับ คุณ pop_hosxp
รบกวนพี่ คุณ pop_hosxp ด้วยครับ ที่คุณ woravet แก้ให้เป็นการนำอายุมาแสดง
ไม่ใช่เป็นการนำ เอาวันเกิดมาหาอายุ อย่าที่คุณ pop เสนอยังก็รบกวน คุณ pop ด้ยนะครับ
-
ลองใช้ (datediff(p.birthdate, date())/365 as age
ไม่แน่ใจนะครับ ลองดูก่อนครับ ฝากอาจารย์ท่านอื่นตรวจสอบด้วยครับ
จริง ๆ ลองค้นหาดูใน forum เรื่องการหาอายุก็ได้ครับ รู้สว่าจะมีคนบอกไว้แล้วครับ