BMS-HOSxP Community

HOSxP => Report Exchange => ข้อความที่เริ่มโดย: prapansak ที่ พฤศจิกายน 01, 2011, 15:29:56 PM

หัวข้อ: ขอ Code การนับข้อมูลที่อยู่คนละเล็กคอดหน่อยจ้า
เริ่มหัวข้อโดย: prapansak ที่ พฤศจิกายน 01, 2011, 15:29:56 PM
วันนี้เขียนรายงาน หญิงตั้งครรภ์ที่ฝากท้องครบ 4 ครั้ง ตามเกณฑ์
 anc_service_number จะต้อง  = 1,2,3,4 จึงจะนับเป็น 1 คนที่มีการให้บริการครบตามเกณฑ์
 ถ้ามีแค่  anc_service_number = 1,3,4 ก็จะถื่อว่าไม่ตามเกณฑ์
แต่ข้อมูลดันอยู่คนละเล็กคอดผมเลยนับไม่ได้ พอจะมีวิธีสร้างเงือนไขไหมครับ ท่านเทพทั้งหลายช่วยทีจ้า
หัวข้อ: Re: ขอ Code การนับข้อมูลที่อยู่คนละเล็กคอดหน่อยจ้า
เริ่มหัวข้อโดย: เกื้อกูล ครับ.. ที่ พฤศจิกายน 01, 2011, 21:33:54 PM
AND ANC_SERVICE_NUMBER IN ("1","2","3","4")
หัวข้อ: Re: ขอ Code การนับข้อมูลที่อยู่คนละเล็กคอดหน่อยจ้า
เริ่มหัวข้อโดย: prapansak ที่ พฤศจิกายน 02, 2011, 08:43:11 AM
AND ANC_SERVICE_NUMBER IN ("1","2","3","4")
ตามคำสั่งนี้ ถึงแม้ว่าจะไม่มี "2" ก็ยังมีข้อมูลครับ ที่ผมต้องการคือ เช็คตั้งแต่ "1" ,"2","3","4" ถ้าไม่มีข้อมูล
"2" ก็ต้องไม่โชว์ข้อมูล จนกว่าในตารางจะมีทั้งหมด จาก1-4 เลยครับ
หัวข้อ: Re: ขอ Code การนับข้อมูลที่อยู่คนละเล็กคอดหน่อยจ้า
เริ่มหัวข้อโดย: leonet ที่ พฤศจิกายน 02, 2011, 09:49:05 AM
group ตาม HN  และ Count ตาม vn
หัวข้อ: Re: ขอ Code การนับข้อมูลที่อยู่คนละเล็กคอดหน่อยจ้า
เริ่มหัวข้อโดย: prapansak ที่ พฤศจิกายน 02, 2011, 14:39:00 PM
เขียน Code ให้ดูหน่อย
หัวข้อ: Re: ขอ Code การนับข้อมูลที่อยู่คนละเล็กคอดหน่อยจ้า
เริ่มหัวข้อโดย: golf_win ที่ พฤศจิกายน 02, 2011, 15:08:45 PM
แบบนี้ได้มั้ยครับ

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 + '" ');

ลองตรวจสอบดูว่าตรงตามต้องการมั้ย
หัวข้อ: Re: ขอ Code การนับข้อมูลที่อยู่คนละเล็กคอดหน่อยจ้า
เริ่มหัวข้อโดย: prapansak ที่ พฤศจิกายน 02, 2011, 16:21:08 PM
ต้องการหายอดผู้มารับบริการที่มีการฝากครรภ์ ครบตามเกณฑ์
คือต้องมีข้อมูล 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 รึเปล่า
หัวข้อ: Re: ขอ Code การนับข้อมูลที่อยู่คนละเล็กคอดหน่อยจ้า
เริ่มหัวข้อโดย: woravet ที่ พฤศจิกายน 02, 2011, 16:41:38 PM
ที่ส่งเข้ากล่องข้อความผิดพลาดหน่อยคับ
ลองตัวใหม่
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


หัวข้อ: Re: ขอ Code การนับข้อมูลที่อยู่คนละเล็กคอดหน่อยจ้า
เริ่มหัวข้อโดย: เกื้อกูล ครับ.. ที่ พฤศจิกายน 02, 2011, 22:56:39 PM
ตามเกณฑ์น่าจะเป็น ฟิวด์  anc_Service_type_id หรือเปล่าครับ...
ผมว่า... anc_service_number น่าจะเป็นจำนวนครั้งที่มาฝากครรภ์ ของ anc_member รายนั้น... เช่น เกณฑ์ที่ 2 ของการฝากครรภ์....แต่มาฝากถึง 3 ครั้งในช่วงเกณฑ์อายุครรภ์นั้น... ??? ??? ???
หัวข้อ: Re: ขอ Code การนับข้อมูลที่อยู่คนละเล็กคอดหน่อยจ้า
เริ่มหัวข้อโดย: prapansak ที่ พฤศจิกายน 03, 2011, 10:04:27 AM
ได้แล้วครับ ขอขอบคุณ อาจารย์ทุกๆท่านที่ให้ความช่วยเหลือครับผม
..... ;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