BMS-HOSxP Community
HOSxP => Report Exchange => ข้อความที่เริ่มโดย: prapansak ที่ พฤศจิกายน 01, 2011, 15:29:56 PM
-
วันนี้เขียนรายงาน หญิงตั้งครรภ์ที่ฝากท้องครบ 4 ครั้ง ตามเกณฑ์
anc_service_number จะต้อง = 1,2,3,4 จึงจะนับเป็น 1 คนที่มีการให้บริการครบตามเกณฑ์
ถ้ามีแค่ anc_service_number = 1,3,4 ก็จะถื่อว่าไม่ตามเกณฑ์
แต่ข้อมูลดันอยู่คนละเล็กคอดผมเลยนับไม่ได้ พอจะมีวิธีสร้างเงือนไขไหมครับ ท่านเทพทั้งหลายช่วยทีจ้า
-
AND ANC_SERVICE_NUMBER IN ("1","2","3","4")
-
AND ANC_SERVICE_NUMBER IN ("1","2","3","4")
ตามคำสั่งนี้ ถึงแม้ว่าจะไม่มี "2" ก็ยังมีข้อมูลครับ ที่ผมต้องการคือ เช็คตั้งแต่ "1" ,"2","3","4" ถ้าไม่มีข้อมูล
"2" ก็ต้องไม่โชว์ข้อมูล จนกว่าในตารางจะมีทั้งหมด จาก1-4 เลยครับ
-
group ตาม HN และ Count ตาม vn
-
เขียน Code ให้ดูหน่อย
-
แบบนี้ได้มั้ยครับ
Value :=GetSQLIntegerData('select count(distinct(a.person_id)) as cc from person_anc_service s '+
' left outer join person_anc a on a.person_anc_id=s.person_anc_id '+
' left outer join ovst o on o.vn=s.vn '+
' where a.pre_labor_service1_date is not null and a.pre_labor_service2_date is not null '+
' and a.pre_labor_service3_date is not null '+
' and a.pre_labor_service4_date is not null '+
' and a.pre_labor_service4_date between "' + d1 + '" and "' + d2 + '" ');
ลองตรวจสอบดูว่าตรงตามต้องการมั้ย
-
ต้องการหายอดผู้มารับบริการที่มีการฝากครรภ์ ครบตามเกณฑ์
คือต้องมีข้อมูล anc_server_number = 1,2,3,4
ปกติถ้าเป็น คอลัมแยกแบบ anc_server_number1,anc_server_number 2,anc_server_number 3,anc_server_number 4
ก็จะทำหนดเป็น
anc_server_number 1=1
anc_server_number 2=2
anc_server_number 3=3
anc_server_number 4=4
แต่ปัญหาคือ anc_server_number มี่ตารางเดียวแต่คนละ vn จึงอยากจะหาว่า แต่ละ vn นั้น มีการเก็บข้อมูล
anc_server_number ตั้งแต่ครั้งที่ 1 - 4 รึเปล่า
-
ที่ส่งเข้ากล่องข้อความผิดพลาดหน่อยคับ
ลองตัวใหม่
select a.*
from (select a.person_anc_id,a.person_id,p.pname,p.fname,p.lname
,a1.anc_service_number anc1
,a2.anc_service_number anc2
,a3.anc_service_number anc3
,a4.anc_service_number anc4
,if(a1.anc_service_number=1
and a2.anc_service_number=2
and a3.anc_service_number=3
and a4.anc_service_number=4,1,0) 'ANC_full'
from person_anc a
left join person p on p.person_id=a.person_id
left join person_anc_service a1 on a1.person_anc_id=a.person_anc_id
and a1.anc_service_number=1
left join person_anc_service a2 on a2.person_anc_id=a.person_anc_id
and a2.anc_service_number=2
left join person_anc_service a3 on a3.person_anc_id=a.person_anc_id
and a3.anc_service_number=3
left join person_anc_service a4 on a4.person_anc_id=a.person_anc_id
and a4.anc_service_number=4
group by a.person_anc_id) a where anc_full=1 //เปลี่ยนเอา 0 กับ 1
-
ตามเกณฑ์น่าจะเป็น ฟิวด์ anc_Service_type_id หรือเปล่าครับ...
ผมว่า... anc_service_number น่าจะเป็นจำนวนครั้งที่มาฝากครรภ์ ของ anc_member รายนั้น... เช่น เกณฑ์ที่ 2 ของการฝากครรภ์....แต่มาฝากถึง 3 ครั้งในช่วงเกณฑ์อายุครรภ์นั้น... ??? ??? ???
-
ได้แล้วครับ ขอขอบคุณ อาจารย์ทุกๆท่านที่ให้ความช่วยเหลือครับผม
..... ;D ;D ;D
select count(distinct(s1.person_anc_id) ) as tg
,s1.anc_service_number as s1
,s2.anc_service_number as s2
,s3.anc_service_number as s3
,s4.anc_service_number as s4
from person_anc a
left outer join person_anc_service s1 on s1.person_anc_id=a.person_anc_id
left outer join person_anc_service s2 on s2.person_anc_id=a.person_anc_id
left outer join person_anc_service s3 on s3.person_anc_id=a.person_anc_id
left outer join person_anc_service s4 on s4.person_anc_id=a.person_anc_id
where s1.person_anc_id=18
and s1.anc_service_number=1
and s2.anc_service_number=2
and s3.anc_service_number=3
and s4.anc_service_number=4