BMS-HOSxP Community

HOSxP => Report Exchange => ข้อความที่เริ่มโดย: chaiyahos ที่ ธันวาคม 04, 2012, 16:29:52 PM

หัวข้อ: รบกวนคำสั่ง sql
เริ่มหัวข้อโดย: chaiyahos ที่ ธันวาคม 04, 2012, 16:29:52 PM
ขอคำสั่ง sql ในการนับจำนวน visit ที่มานวด+อบสมุนไพร+ประคบสมุนไพร(มีครบทั้ง 3 รายการใน 1 visit) ครับ จะเอาไปใส่ใน variable
หรือคำสั่งที่ใกล้เคียงก็ได้ เช่น นับจำนวน visit ที่มีการสั่งใช้ยาทั้ง ยา A,B,C ใน 1 visit (จะลองเอาไปประยุกต์ดูครับ)
หัวข้อ: Re: รบกวนคำสั่ง sql
เริ่มหัวข้อโดย: BBT Hospital ที่ ธันวาคม 06, 2012, 21:05:15 PM
ขอพิมพ์โดยไม่ได้ลองกับHOSxp นะครับ

select o.vn from opitemrece o
where o.vn in (select op.vn from opitemrece op where op.icode="รหัสยาที่ 1"
                       and op.vstdate between "2012-12-01" and "2012-12-03" )
  and o.icode="รหัสยาตัวที่ 2" and o.vstdate between "2012-12-01" and "2012-12-03"
limit 10

ผมใช้ ตารางเดียวกันโดยกำหนดชื่อย่อตารางไว้คนละแบบนะครับ จะได้เข้าใจง่าย
ซึ่งความจริงอาจจะไม่ต้องใส่เลยก็ได้ครับ
หัวข้อ: Re: รบกวนคำสั่ง sql
เริ่มหัวข้อโดย: chaiyahos ที่ ธันวาคม 08, 2012, 10:25:25 AM
ขอบคุณครับ จะลองปรับใช้ดูนะครับ  ;D
หัวข้อ: Re: รบกวนคำสั่ง sql
เริ่มหัวข้อโดย: มนตรี บอยรักยุ้ยคนเดียว ที่ ธันวาคม 08, 2012, 10:31:30 AM
select o.vn from opitemrece o
where op.icode in ("รหัสยา A" ,"รหัสยา B" ,"รหัสยา C" )
and  o.vstdate between "2012-12-01" and "2012-12-03"
group by o.vn
หัวข้อ: Re: รบกวนคำสั่ง sql
เริ่มหัวข้อโดย: BBT Hospital ที่ ธันวาคม 10, 2012, 19:12:00 PM
select o.vn from opitemrece o
where op.icode in ("รหัสยา A" ,"รหัสยา B" ,"รหัสยา C" )
and  o.vstdate between "2012-12-01" and "2012-12-03"
group by o.vn
คำสั่งนี้หากมีการสั่งยาแค่ตัวเดียวก็จะขึ้นแล้วไม่ใช่หรือครับ แต่ที่เขาต้องการคือต้องมียาทั้ง 2 ตัวอยู่ด้วย
แต่พอมองเห็นคำสั่งนี้ก็นึกขึ้นได้อีกแบบครับ
select o.vn  from opitemrece o
where o.icode in ("รหัสยา 1","รหัสยา2","รหัสยา3")
and o.vstdate between "2012-12-01" and "2012-12-03"
group by o.vn
having count(o.vn>2)

ใช้ในกรณีที่สั่งยาทั้ง 3 ตัว ครับ
หัวข้อ: Re: รบกวนคำสั่ง sql
เริ่มหัวข้อโดย: BBT Hospital ที่ ธันวาคม 11, 2012, 08:22:18 AM
select o.vn  from opitemrece o
where o.icode in ("รหัสยา 1","รหัสยา2","รหัสยา3")
and o.vstdate between "2012-12-01" and "2012-12-03"
group by o.vn
having count(o.vn>2)

ระวัง คำสั่งนี้ตรงที่ หากมีการสั่งยาเดิมซ้ำ 2 - 3 ครัง ก็อาจทำให้ได้ vn ที่สั่งยาจริง ๆ แค่ 1 - 2 ตัวได้ครับ
หัวข้อ: Re: รบกวนคำสั่ง sql
เริ่มหัวข้อโดย: ถาวร ที่ ธันวาคม 11, 2012, 08:34:26 AM
select o.vn from opitemrece o
where op.icode in ("รหัสยา A" ,"รหัสยา B" ,"รหัสยา C" )
and  o.vstdate between "2012-12-01" and "2012-12-03"
group by o.vn
คำสั่งนี้หากมีการสั่งยาแค่ตัวเดียวก็จะขึ้นแล้วไม่ใช่หรือครับ แต่ที่เขาต้องการคือต้องมียาทั้ง 2 ตัวอยู่ด้วย
แต่พอมองเห็นคำสั่งนี้ก็นึกขึ้นได้อีกแบบครับ
select o.vn  from opitemrece o
where o.icode in ("รหัสยา 1","รหัสยา2","รหัสยา3")
and o.vstdate between "2012-12-01" and "2012-12-03"
group by o.vn
having count(o.vn>2)

ใช้ในกรณีที่สั่งยาทั้ง 3 ตัว ครับ

ขอแก้ไขเพิ่มเติมครับ
ตรง having count(o.vn>2)  ให้เอา >2 ออกนอกวงเล็บครับ
แบบนี้ครับ having count(o.vn)>2
หัวข้อ: Re: รบกวนคำสั่ง sql
เริ่มหัวข้อโดย: BBT Hospital ที่ ธันวาคม 11, 2012, 08:44:57 AM
select o.vn from opitemrece o
where op.icode in ("รหัสยา A" ,"รหัสยา B" ,"รหัสยา C" )
and  o.vstdate between "2012-12-01" and "2012-12-03"
group by o.vn
คำสั่งนี้หากมีการสั่งยาแค่ตัวเดียวก็จะขึ้นแล้วไม่ใช่หรือครับ แต่ที่เขาต้องการคือต้องมียาทั้ง 2 ตัวอยู่ด้วย
แต่พอมองเห็นคำสั่งนี้ก็นึกขึ้นได้อีกแบบครับ
select o.vn  from opitemrece o
where o.icode in ("รหัสยา 1","รหัสยา2","รหัสยา3")
and o.vstdate between "2012-12-01" and "2012-12-03"
group by o.vn
having count(o.vn>2)

ใช้ในกรณีที่สั่งยาทั้ง 3 ตัว ครับ

ขอแก้ไขเพิ่มเติมครับ
ตรง having count(o.vn>2)  ให้เอา >2 ออกนอกวงเล็บครับ
แบบนี้ครับ having count(o.vn)>2
ขอบคุณครับ บังเอิญไม่ได้ทดสอบ จึงพิมพ์ผิดไปครับ
หัวข้อ: Re: รบกวนคำสั่ง sql
เริ่มหัวข้อโดย: chaiyahos ที่ ธันวาคม 11, 2012, 18:34:09 PM
ขอบคุณทุกท่านครับที่ให้คำตอบที่เป็นประโยชน์ แต่ผมลองทำแล้ว โจทย์มันซับซ้อนกว่าที่คิด เช่น ต้องการทราบจำนวนครั้งที่มีการจ่ายยาสมุนไพรอย่างเดียว (ไม่รวมยา+นวด+ประคบ) ,ยา+นวด(ไม่รวมประคบ+ยา+นวด+อบสมุนไพร) ฯลฯ  ??? ??? ??? สุดท้ายใช้ access เลยครับ
หัวข้อ: Re: รบกวนคำสั่ง sql
เริ่มหัวข้อโดย: มนตรี บอยรักยุ้ยคนเดียว ที่ ธันวาคม 11, 2012, 20:45:29 PM
ขอบคุณทุกท่านครับที่ให้คำตอบที่เป็นประโยชน์ แต่ผมลองทำแล้ว โจทย์มันซับซ้อนกว่าที่คิด เช่น ต้องการทราบจำนวนครั้งที่มีการจ่ายยาสมุนไพรอย่างเดียว (ไม่รวมยา+นวด+ประคบ) ,ยา+นวด(ไม่รวมประคบ+ยา+นวด+อบสมุนไพร) ฯลฯ  ??? ??? ??? สุดท้ายใช้ access เลยครับ
ความตั้งใจ และการแสวงหา ย่อมนำไปสู่หนทางออก

ต้องการทราบจำนวนครั้งที่มีการจ่ายยาสมุนไพรอย่างเดียว(ไม่รวมอบ+นวด+ประคบสมุนไพร)
 o.icode  in ("รหัสยา")  and  o.icode not in ("รหัสนวด") and o.icode not in ("รหัสประคบ") and o.icode not in ("รหัสอบ")
หัวข้อ: Re: รบกวนคำสั่ง sql
เริ่มหัวข้อโดย: chaiyahos ที่ ธันวาคม 14, 2012, 09:01:01 AM
คุณมนตรี เป๊ะ!!เลย เดี๋ยวจะลองเขียน report ใหม่ ขอบคุณครับ
ตอนนี้ใช้ access ประมวลผลนานมากกกกกก.....