BMS-HOSxP Community
HOSxP => การเขียน SQL Script => ข้อความที่เริ่มโดย: 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
ช่วยแก้ไขเพิ่มเติมด้วยครับ
-
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 !=''
-
จนท ต้องการ BMI ระหว่าง 25-29.9 เลยต้องใช้ bmi between 25 and 29.9 ผลออก
แต่ ปัญหาอยู่ที่ วันที่บริการล่าสุด ค่า bms (ที่แสดงเป็นของวันอื่น)
-
โจทย์ไม่ชัดว่าจะเอาข้อมูลอะไร
วันที่กับ BMI มีความสัมพันธ์กัน
ถ้าให้ผมคิด ผมคงเอาวันที่ล่าสุดที่มี BMI อยู่ในช่วง 25-29.9 ใช่ไหมครับ
(หรือโจทย์ต้องการทราบว่า ในช่วงเวลาที่กำหนดมีใครที่มี BMI ครั้งล่าสุดที่อยู่ในช่วง 25-29.9)
คือถ้ามาหลายวันในช่วงเวลาที่กำหนด และ BMI ก็อยู่ในเกณฑ์ทุกครั้ง ให้เอาวันที่ล่าสุด และ BMI ของวันที่ล่าสุดมาแสดง
แต่ถ้าครั้งล่าสุด BMI ไม่อยู่ในช่วง ก็ย้อนหลังกลับไปหาวันที่ BMI อยู่ในช่วงที่กำหนดให้เจอ
ถ้าใช่ ดังนั้นการใช้ max(vn) อาจไม่ถูกต้องครับ หาก BMI ครั้งล่าสุดไม่ได้อยู๋ในเกณฑ์ที่กำหนด
-
ไม่ชัดเจนในสิ่งที่ต้องการครับ ผมเดาเอาว่าประมาณนี้หรือป่าว ลองทดสอบทีนะครับ
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
-
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
-
เอาวันที่ล่าสุดที่มี BMI อยู่ในช่วง 25-29.9 ตามนั้นครับ