BMS-HOSxP Community
HOSxP => Report Exchange => ข้อความที่เริ่มโดย: pongnk213 ที่ พฤศจิกายน 21, 2010, 23:18:23 PM
-
อยากได้คำสั่งนับผู้ที่มีโรคประจำตัว 2 โรคคือเป็นทั้งDMและHT ในตารางperson_chronic
ผมทำได้แต่โรคเดียว ตามรายงานที่postครับ
-
select p.person_id ,p.clinic,p2.person_id,p2.clinic from person_chronic p
left outer join person_chronic p2 on p.person_id=p2.person_id
where p.clinic<>p2.clinic
order by p.person_id
ลองแบบเบื้องต้นครับ..ผมทำได้แค่นี้..
-
อยากได้คำสั่งนับผู้ที่มีโรคประจำตัว 2 โรคคือเป็นทั้งDMและHT ในตารางperson_chronic
ผมทำได้แต่โรคเดียว ตามรายงานที่postครับ
... ดูจากรายงานที่คุณ pongnk213 แนบมาให้นะครับ ...
คำสั่งในรายงานที่จะนับลองใช้เป็น
Value := GetSQLIntegerData('select count(pc1.person_id) as cc '+
' from person_chronic pc1,person_chronic pc2,person p '+
' where pc1.person_id = pc2.person_id '+
' and pc1.clinic = "001" and pc2.clinic = "002" '+
' and pc1.person_id = p.person_id '+
' and p.village_id = "'+DBPipeline['village_id']+'" '+
' and p.house_regist_type_id in ("1","3")' +
' and p.death = "N" ');
หรือจะใช้แบบข้างล่างนี้ก็ได้ครับ
Value := GetSQLIntegerData('select count(pc1.person_id) as cc '+
' from person_chronic pc1,person p '+
' where pc1.clinic = "001" '+
' and pc1.person_id = p.person_id '+
' and p.village_id = "'+DBPipeline['village_id']+'" '+
' and p.house_regist_type_id in ("1","3")' +
' and p.death = "N" '+
' and pc1.person_id in ('+GetSQLSubQueryData('select pc2.person_id '+
' from person_chronic pc2 where pc2.clinic = "002" ')+') ');
ส่วนคำสั่งที่จะเป็นผลรวมก็ตัดตรง
' and p.village_id = "'+DBPipeline['village_id']+'" '+
ออกไปครับ
โดยที่ รหัสคลีนิค DM คือ 001 ส่วน HT คือ 002 นะครับ ... :D ....
-
... ทีนี้ในรายงานตรงส่วนของ DM อย่างเดียว
ถ้าหมายถึงคนที่เป็นเบาหวานอย่างเดียว ไม่ได้เป็นความดันร่วมด้วย คงใช้คำสั่งแบบในรายงานที่แนบไว้ไม่ได้ครับ ข้อมูลจะผิดพลาด เพราะจะนับคนที่เป็นทั้งเบาหวานและความดันมารวมด้วย ในกรณีของ HT อย่างเดียว ก็เป็นไปในทางเดียวกันครับ ...
ในส่วนของ DM อย่างเดียว ลองใช้คำสั่งเป็น
Value := GetSQLIntegerData('select count(pc1.person_id) as cc '+
' from person_chronic pc1,person p '+
' where pc1.clinic = "001" '+
' and pc1.person_id = p.person_id '+
' and p.village_id = "'+DBPipeline['village_id']+'" '+
' and p.house_regist_type_id in ("1","3")' +
' and p.death = "N" '+
' and pc1.person_id not in ('+GetSQLSubQueryData('select pc2.person_id '+
' from person_chronic pc2 where pc2.clinic = "002" ')+') ');
และในส่วนของ HT อย่างเดียว ลองใช้คำสั่งเป็น
Value := GetSQLIntegerData('select count(pc1.person_id) as cc '+
' from person_chronic pc1,person p '+
' where pc1.clinic = "002" '+
' and pc1.person_id = p.person_id '+
' and p.village_id = "'+DBPipeline['village_id']+'" '+
' and p.house_regist_type_id in ("1","3")' +
' and p.death = "N" '+
' and pc1.person_id not in ('+GetSQLSubQueryData('select pc2.person_id '+
' from person_chronic pc2 where pc2.clinic = "001" ')+') ');
ตรงผลรวมก็ตัดตรง
' and p.village_id = "'+DBPipeline['village_id']+'" '+
ออกไปเช่นกันครับ
... ลองทดสอบดูนะครับ .... :D ...
-
ขอบคุณครับ
จะลองทำดูนะครับ
-
อยากได้คำสั่งนับผู้ที่มีโรคประจำตัว 2 โรคคือเป็นทั้งDMและHT ในตารางperson_chronic
ผมทำได้แต่โรคเดียว ตามรายงานที่postครับ
ถ้าอยากได้รายงานทั้งหมดในเขตรับผิดชอบของโรงบาลแก้ยังไงครับ