BMS-HOSxP Community

HOSxP => การเขียน SQL Script => ข้อความที่เริ่มโดย: Bluebird ที่ มิถุนายน 19, 2015, 14:23:13 PM

หัวข้อ: ต้องการทะเบียนดึงข้อมูล BMI ล่าสุดของผู้รับบริการแต่ล่ะคน
เริ่มหัวข้อโดย: Bluebird ที่ มิถุนายน 19, 2015, 14:23:13 PM
select o.hn,max(o.vstdate)as visitdate,o.bmi,
concat(p.pname,p.fname," ",p.lname)as ptname
from opdscreen o
left outer join ovst ov on ov.vn=o.vn
left outer join patient p on p.hn=o.vn
where o.vstdate between "2014-10-01" and "2015-03-31"
and bmi between 25 and 29.9
group by o.hn

ช่วยแก้ไขเพิ่มเติมด้วยครับ
หัวข้อ: Re: ต้องการทะเบียนดึงข้อมูล BMI ล่าสุดของผู้รับบริการแต่ล่ะคน
เริ่มหัวข้อโดย: เกื้อกูล ครับ.. ที่ มิถุนายน 19, 2015, 14:52:06 PM
select o.hn,max(o.vstdate)as visitdate,o.bmi,
concat(p.pname,p.fname," ",p.lname)as ptname
from opdscreen o
left outer join ovst ov on ov.vn=o.vn
left outer join patient p on p.hn=o.vn
where o.vstdate between "2014-10-01" and "2015-03-31"
and bmi between 25 and 29.9
group by o.hn

ช่วยแก้ไขเพิ่มเติมด้วยครับ

max(o.vn)   สำคัญกว่า  o.vstdate     o.bw !='' and  o.height !=''
หัวข้อ: Re: ต้องการทะเบียนดึงข้อมูล BMI ล่าสุดของผู้รับบริการแต่ล่ะคน
เริ่มหัวข้อโดย: Bluebird ที่ มิถุนายน 19, 2015, 15:46:03 PM
จนท ต้องการ BMI ระหว่าง 25-29.9  เลยต้องใช้ bmi between 25 and 29.9 ผลออก
แต่ ปัญหาอยู่ที่ วันที่บริการล่าสุด ค่า bms (ที่แสดงเป็นของวันอื่น)
หัวข้อ: Re: ต้องการทะเบียนดึงข้อมูล BMI ล่าสุดของผู้รับบริการแต่ล่ะคน
เริ่มหัวข้อโดย: udomchok ที่ มิถุนายน 20, 2015, 03:06:53 AM
โจทย์ไม่ชัดว่าจะเอาข้อมูลอะไร
วันที่กับ BMI มีความสัมพันธ์กัน
ถ้าให้ผมคิด ผมคงเอาวันที่ล่าสุดที่มี BMI อยู่ในช่วง 25-29.9 ใช่ไหมครับ
(หรือโจทย์ต้องการทราบว่า ในช่วงเวลาที่กำหนดมีใครที่มี BMI ครั้งล่าสุดที่อยู่ในช่วง 25-29.9)
คือถ้ามาหลายวันในช่วงเวลาที่กำหนด และ BMI ก็อยู่ในเกณฑ์ทุกครั้ง ให้เอาวันที่ล่าสุด และ BMI ของวันที่ล่าสุดมาแสดง
แต่ถ้าครั้งล่าสุด BMI ไม่อยู่ในช่วง ก็ย้อนหลังกลับไปหาวันที่ BMI อยู่ในช่วงที่กำหนดให้เจอ
ถ้าใช่ ดังนั้นการใช้ max(vn) อาจไม่ถูกต้องครับ หาก BMI ครั้งล่าสุดไม่ได้อยู๋ในเกณฑ์ที่กำหนด

หัวข้อ: Re: ต้องการทะเบียนดึงข้อมูล BMI ล่าสุดของผู้รับบริการแต่ล่ะคน
เริ่มหัวข้อโดย: golf_win ที่ มิถุนายน 21, 2015, 09:13:32 AM
ไม่ชัดเจนในสิ่งที่ต้องการครับ ผมเดาเอาว่าประมาณนี้หรือป่าว ลองทดสอบทีนะครับ

select c.hn, c.vstdate, c.bmi, concat(p.pname,p.fname," ",p.lname)as ptname
from opdscreen c inner join
(  select hn, max(vstdate) maxvstdate
   from opdscreen
   where vstdate between "2014-10-01" and "2015-03-31"
   group by hn
) tab1 on c.hn = tab1.hn and c.vstdate = tab1.maxvstdate
left outer join patient p on p.hn=c.hn
where bmi between 25 and 29.9
หัวข้อ: Re: ต้องการทะเบียนดึงข้อมูล BMI ล่าสุดของผู้รับบริการแต่ล่ะคน
เริ่มหัวข้อโดย: woravet ที่ มิถุนายน 21, 2015, 13:42:05 PM
select s.vn,o.an,s.hn,concat(pt.pname,pt.fname," ",pt.lname) ptname
,s.vstdate,s.bmi,s.bw,s.height
from (
select  max(vn) vn
from opdscreen
where vstdate between "2014-10-01" and "2015-03-31"
and bmi between 25 and 29.9
group by hn) a
join opdscreen s on s.vn=a.vn
join patient pt on pt.hn=s.hn
หัวข้อ: Re: ต้องการทะเบียนดึงข้อมูล BMI ล่าสุดของผู้รับบริการแต่ล่ะคน
เริ่มหัวข้อโดย: Bluebird ที่ มิถุนายน 24, 2015, 11:12:49 AM
เอาวันที่ล่าสุดที่มี BMI อยู่ในช่วง 25-29.9  ตามนั้นครับ