BMS-HOSxP Community
HOSxP => MySQL => ข้อความที่เริ่มโดย: atit ที่ กันยายน 25, 2009, 18:07:27 PM
-
ใช้คำสั่ง
select count(*)as cc
from lab_head h
left outer join lab_order o1 on o1.lab_order_number=h.lab_order_number and o1.confirm="Y"
and o1.lab_order_result<>"" and o1.lab_order_result is not NULL
where h.order_date between "2009-09-20" and "2009-09-24" and o1.lab_items_code in(66,3088)
group by h.hn
having count(h.hn)<2
แต่อยากได้ผลรวมว่าทั้งหมดกี่คนเพื่อเอาไปใส่ใน variable ต้องใช้คำสั่งแบบใหนครับ ;D
ขอบคุณล่วงหน้าครับ
-
รูปที่ดึงมาได้ครับ
-
เอาแบบนี้ได้ไหมครับ
ความหมายคือ จะ count ให้เป็นจำนวนคนใช่ไหมครับ
select count(*)as cc
from vn_stat h
where h.hn in(select hn from lab_order
where confirm="Y" and lab_order_result<>'' and lab_order_result is not null
and vstdate between "2009-09-20" and "2009-09-24" and lab_items_code in("66","3088") )
อืมใช่ ผมลืม ไป lab_order ไม่มี hn ต้องไป join กับ lab_hard อีกครับ ตามคุณ atit แจ้งมาถูกแล้วครับ
-
แบบคุณอาร์มก็ได้ หรือถ้าต้องการแบบนี้ก็ลองไปใช้ดูครับ.... ;D ;D
a:= GetSQLSubQueryData('select h.hn '+
' from lab_head h '+
' left outer join lab_order o1 on o1.lab_order_number=h.lab_order_number and o1.confirm="Y" '+
' and o1.lab_order_result<>"" and o1.lab_order_result is not NULL '+
' where h.order_date between "'+formatdatetime('yyyy-mm-dd',rxdate1)+'" and "'+
formatdatetime('yyyy-mm-dd',rxdate2)+'" and o1.lab_items_code in("4","15") '+
' group by h.hn '+
' having count(h.hn) >= 2 ');
Value :=GetSQLStringData('select count(distinct hn)as cc from lab_head where hn in('+a+') ') ;
-
เอาแบบนี้ได้ไหมครับ
ความหมายคือ จะ count ให้เป็นจำนวนคนใช่ไหมครับ
select count(*)as cc
from vn_stat h
where h.hn in(select hn from lab_order ตารางนี้ไม่มี hn ครับ
where confirm="Y" and lab_order_result<>'' and lab_order_result is not null
and vstdate between "2009-09-20" and "2009-09-24" and lab_items_code in("66","3088") )
ปล. แต่ถ้าเป็นแบบของคุณ atit จะตัด HN ที่มาซ้ำ 2 ครั้งออกนะ(ใช่ไหมครับ ) *** ผลจะเท่ากับ 3
แต่อันนี้จะไม่ตัดออก แต่นับเป็น 1 คน ครับ *** ผลจะเท่ากับ 4
เนื่องจากนับจาก vn_stat ที่มี hn ที่ดึงมาเลยนับมาหมดเลยมาตรวจอะไรก็นับหมดที่เป็น HN นี้ก็เลยไม่ตรงครับ
อ้อผมแก้ใหม่นะครับเป็น
select count(*)as cc
from vn_stat v
where v.hn in(select h.hn from lab_head h
left outer join lab_order o1 on o1.lab_order_number=h.lab_order_number and o1.confirm="Y"
and o1.lab_order_result<>"" and o1.lab_order_result is not NULL
where h.order_date between "2009-09-20" and "2009-09-24" and o1.lab_items_code in("66","3088") )
แบบคุณอาร์มก็ได้ หรือถ้าต้องการแบบนี้ก็ลองไปใช้ดูครับ.... ;D ;D
a:= GetSQLSubQueryData('select h.hn '+
' from lab_head h '+
' left outer join lab_order o1 on o1.lab_order_number=h.lab_order_number and o1.confirm="Y" '+
' and o1.lab_order_result<>"" and o1.lab_order_result is not NULL '+
' where h.order_date between "'+formatdatetime('yyyy-mm-dd',rxdate1)+'" and "'+
formatdatetime('yyyy-mm-dd',rxdate2)+'" and o1.lab_items_code in("4","15") '+
' group by h.hn '+
' having count(h.hn) >= 2 ');
Value :=GetSQLStringData('select count(distinct hn)as cc from lab_head where hn in('+a+') ') ;
ผมตั้ง a:string; นะครับเหมือนว่าจะได้แต่ก็นับได้แค่ 1 ครับน่าจะเท่ากับ 3ก็เลยยังงงอยู่เลย
a:= GetSQLSubQueryData('select count(h.hn) '+
' from lab_head h '+
' left outer join lab_order o1 on o1.lab_order_number=h.lab_order_number and o1.confirm="Y" '+
' and o1.lab_order_result<>"" and o1.lab_order_result is not NULL '+
' where h.order_date between "'+ds1+'" and "'+ds2+'" and o1.lab_items_code in("66","3088") '+
' group by h.hn '+
' having count(h.hn) < 2 ');
ผิดตรงใหนหรือเปล่าครับ ;D
ขอบคุณทุกท่านที่ตอบครับ
ยังรอคอยคำตอบต่อไป ;D
-
หลังจากที่ไม่ยอมแพ้ จากเที่ยงวัน ยันเที่ยงคืน ก็สำเร็จแล้วครับ ดังนี้
select count(hn)as cc
from lab_head lh
left outer join lab_order_service los on los.lab_order_number=lh.lab_order_number
where hn in(select h.hn
from lab_head h
left outer join lab_order o1 on o1.lab_order_number=h.lab_order_number and o1.confirm="Y"
and o1.lab_order_result<>"" and o1.lab_order_result is not NULL
where h.order_date between "2009-09-20" and "2009-09-24" and o1.lab_items_code in("66","3088")
group by h.hn
having count(h.hn) < 2)
and lh.order_date between "2009-09-20" and "2009-09-24" and los.lab_code in("66","3088")
ต้องขอบคุณ อ.ทุกท่านที่ช่วยเหลือด้านแนวคิดและตัวอย่างที่เสนอมาครับ ;D
ปล ควรใช้แบบcode ของ อ.nuttawut นะครับ ไม่งั้นจะดึงได้ช้าจนทำให้ระบบอืดได้(คำสั่งถูกแต่วางรูปแบบผิด นี่เป็นอีกเหตุผลหนึ่งที่ควรไปเรียนการเขียนรายงานกับ BMS ครับ)
-
อืม ดีใจด้วยครับ :)
ถามนิดหน่อยครับ คุณ atit อยากได้รายงานแบบไหนเหรอครับ
นับจำนวนคนที่สั่ง lab_items_code in("66","3088") ที่ไม่สั่งซ้ำ หรือไม่นับคนที่สั่ง 2 ครั้ง หรือเปล่าครับ
ปล. ผมเขียนแบบยังไม่ได้ run ดูก็เลยไม่พบ error
การเขียนคำสั่ง ขึ้นอยู่การนำไปใช้ ไม่ได้หมายถึงจะเขียนผิด รูปแบบถูก แต่ผลลัพ ต่างกัน ครับ
ขึ้นอยู่ที่ท่านต้องการแบบไหนมากกว่าครับ
-
อืม ดีใจด้วยครับ :)
ถามนิดหน่อยครับ คุณ atit อยากได้รายงานแบบไหนเหรอครับ
นับจำนวนคนที่สั่ง lab_items_code in("66","3088") ที่ไม่สั่งซ้ำ หรือไม่นับคนที่สั่ง 2 ครั้ง หรือเปล่าครับ
ปล. ผมเขียนแบบยังไม่ได้ run ดูก็เลยไม่พบ error
การเขียนคำสั่ง ขึ้นอยู่การนำไปใช้ ไม่ได้หมายถึงจะเขียนผิด รูปแบบถูก แต่ผลลัพ ต่างกัน ครับ
ขึ้นอยู่ที่ท่านต้องการแบบไหนมากกว่าครับ
ใช่แล้วครับ อย่างที่ อ.อาร์ม ว่าหล่ะ...ผมก็เดาใจท่าน atit อยู่ว่า จริงๆต้องการแบบไหน..บางครั้ง ผลลัพเหมือนกันแต่วิธีอาจต่างกันได้ ...ขึ้นอยู่กับว่าชอบแบบไหน... ;D ;D
-
อืม ดีใจด้วยครับ :)
ถามนิดหน่อยครับ คุณ atit อยากได้รายงานแบบไหนเหรอครับ
นับจำนวนคนที่สั่ง lab_items_code in("66","3088") ที่ไม่สั่งซ้ำ หรือไม่นับคนที่สั่ง 2 ครั้ง หรือเปล่าครับ
ปล. ผมเขียนแบบยังไม่ได้ run ดูก็เลยไม่พบ error
การเขียนคำสั่ง ขึ้นอยู่การนำไปใช้ ไม่ได้หมายถึงจะเขียนผิด รูปแบบถูก แต่ผลลัพ ต่างกัน ครับ
ขึ้นอยู่ที่ท่านต้องการแบบไหนมากกว่าครับ
ไม่ได้หมายถึงใครเขียนถูกเขียนผิดนะครับแต่ผมหมายถึงถ้าวางรูปแบบตามที่ผมโพสจดึงข้อมูลได้ช้าครับแต่ถ้าวางรูปแบบตามท่น nut จะดึงได้เร็วขึ้นครับ
ต้องขออภัยที่ทำให้ งง ครับพอดีอยากทำให้เสร็จแล้วค่อยจะเอามาแจกอีกทีครับ
ที่อยากได้คือ
1.จำนวนคนไข้ที่ตรวจ lab_items_code in("66","3088") เพียง 1 ครั้งใน 1 เดือน
2.จำนวนคนไข้ที่ตรวจ lab_items_code in("66","3088") เพียง 1 ครั้งใน 1 เดือนแล้วให้ผลบวกกี่ราย
3.จำนวนคนไข้ที่ตรวจ lab_items_code in("66","3088") จำนวน 2 ครั้งใน 1 เดือน
4.จำนวนคนไข้ที่ตรวจ lab_items_code in("66","3088") จำนวน 2 ครั้งใน 1 เดือนแล้วให้ผลบวกกี่ราย
5.จำนวนคนไข้ที่ตรวจ lab_items_code in("66","3088") มากกว่า 2 ครั้งใน 1 เดือน
6.จำนวนคนไข้ที่ตรวจ lab_items_code in("66","3088") มากกว่า 2 ครั้งใน 1 เดือนแล้วให้ผลบวกกี่ราย
ประมาณนี้ครับ
ขอคำแนะนำเพิ่มเติมด้วยนะ ครับ ;D
-
ประมาณนี้เปล่าครับ ??? ???
3.จำนวนคนไข้ที่ตรวจ lab_items_code in("66","3088") จำนวน 2 ครั้งใน 1 เดือน
having count(h.hn) = 2
5.จำนวนคนไข้ที่ตรวจ lab_items_code in("66","3088") มากกว่า 2 ครั้งใน 1 เดือน
having count(h.hn) > 2
-
ประมาณนี้เปล่าครับ ??? ???
3.จำนวนคนไข้ที่ตรวจ lab_items_code in("66","3088") จำนวน 2 ครั้งใน 1 เดือน
having count(h.hn) = 2
5.จำนวนคนไข้ที่ตรวจ lab_items_code in("66","3088") มากกว่า 2 ครั้งใน 1 เดือน
having count(h.hn) > 2
ใช่ครับ ได้มาแล้วแต่จะนับว่ามีกี่คน
สุดท้้ายหลังจากถอยไปหลายก้าวกลับไปนอนพักผ่อนสมองกลับมาดูใหม่ ฮ่าๆเส้นผมบังภูเขาสุดท้ายก็เสร็จสมบูรณ์ครับตามนี้ครับ
http://hosxp.net/index.php?option=com_smf&Itemid=28&/topic,12019.new.html#new
;D ;D ;D ;D ;D
-
ซ๊อสหยุด อีกแล้วครับท่านอ.atit !! ;) :D ;D :D ;) ;)