BMS-HOSxP Community

HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: sshpt ที่ ธันวาคม 26, 2007, 15:39:03 PM

หัวข้อ: ขอคำแนะนำเกี่ยวกับการเขียน sql ดึงรายงาน HT ครับ
เริ่มหัวข้อโดย: sshpt ที่ ธันวาคม 26, 2007, 15:39:03 PM
จาก Code เป็นการดึงผู้ป่วย HT ที่มาตามนัด และแสดงค่า BP โดยเรียงตามตำบล หมู่ เลขที่บ้าน จากน้อยไปมาก
แต่ติดปัญหาตรงที่
1.  เรียงตามหมู่ครับ เป็นแบบนี้ครับ 1,10,11,12...,2,20,21... ต้องการให้เป็น 1,2,3...ต้องทำไงครับ (เลขที่บ้านก็เป็นเหมือนกันครับ)
2.  ถ้าจะทำรายงานให้ USER ให้ก็ติดตรง  where oa.nextdate between '2007-10-24' and '2007-10-24' and vn.vstdate between '2007-10-24' and '2007-10-24' and oa.clinic="002"
คือมีวันที่ให้เลือกตั้ง 2 คู่ช่วงเวลา ผมทำได้แค่ 1 คู่ช่วงเวลาครับ ขอคำแนะนำด้วยครับ


select vn.vn,oa.hn,oa.nextdate,concat(pt.pname,pt.fname,"   ",pt.lname) as pt_name,pt.addrpart,pt.moopart,ta.full_name,concat(vn.age_y," - ",vn.age_m," - ",vn.age_d) as pt_age,concat(os.bpd," / ",os.bps) as bpds

from oapp oa

left outer join vn_stat vn on vn.hn=oa.hn
left outer join patient pt  on pt.hn=oa.hn
left outer join thaiaddress ta on ta.addressid=concat(pt.chwpart,pt.amppart,pt.tmbpart)
left outer join opdscreen os on os.vn=vn.vn


where oa.nextdate between '2007-10-24' and '2007-10-24' and vn.vstdate between '2007-10-24' and '2007-10-24' and oa.clinic="002"

order by ta.addressid,pt.moopart,pt.addrpart asc

หัวข้อ: Re: ขอคำแนะนำเกี่ยวกับการเขียน sql ดึงรายงาน HT ครับ
เริ่มหัวข้อโดย: nuttavut ที่ ธันวาคม 26, 2007, 19:14:10 PM
ลองเอารายงานตัวนี้ไปศึกษาครับ...คล้ายๆกันครับ
หัวข้อ: Re: ขอคำแนะนำเกี่ยวกับการเขียน sql ดึงรายงาน HT ครับ
เริ่มหัวข้อโดย: sshpt ที่ ธันวาคม 27, 2007, 08:40:45 AM
ตัวรายงาน DM ที่ผมเคย Post ไว้มันก็ยังไม่ถูกต้องครับ ผมลองแล้ว วันที่ 19 มีผู้ป่วยนัด 164 แต่แสดงในรายงานแค่ 3 รายเองครับ

 ;D ;D
หัวข้อ: Re: ขอคำแนะนำเกี่ยวกับการเขียน sql ดึงรายงาน HT ครับ
เริ่มหัวข้อโดย: woravet ที่ ธันวาคม 28, 2007, 17:16:06 PM
ผมว่าคุณใช้เงื่อนไขของวันนัด+วันมาตรวจ
ทำให้เกิดปัญหา ถ้านัดแล้วไม่มาตรวจหล่ะครับ
ผมว่าน่าจะเป็น
select vn.vn,oa.hn,oa.nextdate,concat(pt.pname,pt.fname,"   ",pt.lname) as pt_name,pt.addrpart,right(concat('0',pt.moopart),2) as moopart,ta.full_name,concat(vn.age_y," - ",vn.age_m," - ",vn.age_d) as pt_age,concat(os.bpd," / ",os.bps) as bpds

from oapp oa
left outer join vn_stat vn on vn.hn=oa.hn
left outer join patient pt  on pt.hn=oa.hn
left outer join thaiaddress ta on ta.addressid=concat(pt.chwpart,pt.amppart,pt.tmbpart)
left outer join opdscreen os on os.vn=vn.vn

where (oa.nextdate between '2007-10-24' or '2007-10-24' and vn.vstdate between '2007-10-24' )and '2007-10-24' and oa.clinic="002"

order by ta.addressid,moopart,pt.addrpart asc

ลองเปลี่ยนตรงช่วงสีแดงดูครับ น่าจะพอใช้ได้
หัวข้อ: Re: ขอคำแนะนำเกี่ยวกับการเขียน sql ดึงรายงาน HT ครับ
เริ่มหัวข้อโดย: SrWooD ที่ ธันวาคม 28, 2007, 23:49:09 PM
หรือจะลองแบบนี้ครับ

แก้ปัญหาได้ทั้ง 2 ส่วนหรือไม่ลองดูครับ

โค๊ด: SQL
  1. SELECT oa.hn,oa.nextdate,concat(pt.pname,pt.fname,"   ",pt.lname) AS pt_name,pt.addrpart,
  2. RIGHT(concat('0',pt.moopart),2) AS moopart,ta.full_name,concat(vn.age_y," - ",vn.age_m," - ",vn.age_d) AS pt_age,concat(os.bpd," / ",os.bps) AS bpds
  3. FROM oapp oa
  4. LEFT OUTER JOIN vn_stat vn ON vn.hn=oa.hn
  5. LEFT OUTER JOIN patient pt  ON pt.hn=oa.hn
  6. LEFT OUTER JOIN thaiaddress ta ON ta.addressid=vn.aid
  7. LEFT OUTER JOIN opdscreen os ON os.vn=vn.vn
  8. WHERE oa.nextdate BETWEEN '2007-10-24' AND '2007-10-24' AND vn.vstdate =oa.nextdate AND oa.clinic="002"
  9. ORDER BY ta.addressid,moopart,pt.addrpart