BMS-HOSxP Community

HOSxP => การเขียน SQL Script => ข้อความที่เริ่มโดย: nan_it ที่ กันยายน 06, 2007, 08:57:01 AM

หัวข้อ: คำสั่ง Count
เริ่มหัวข้อโดย: nan_it ที่ กันยายน 06, 2007, 08:57:01 AM
พอดีผมกำลังเขียนคำสั่งเพื่อนับจำนวนค่าในตาราง opdscreen คือ ผมต้องการนับจำนวนค่าการกรอกข้อมูลในฟิลด์ bpd,bps,bw,pulse,temperature โดยไม่นับจำนวนช่องว่างและค่าที่เป็นศูนย์ เฉพาะผู้ป่วยที่ส่งไปยังจัดสักประวัติ แต่เขียนอย่างไรก็ไม่สำเร็จสักที ช่วยแนะนำหน่อยนะครับ

คำสั่งที่ผมเขียน

select count(op.bpd) as bpd ,count(op.bps) as pbs ,count(op.bw) as bw,count(op.pulse) as pulse,count(op.temperature) as temperature
from opdscreen op , ovst ov
where op.vstdate between "2007-05-03" and "2007-05-03" and op.vn = ov.vn
and ov.main_dep = "010"
group by op.vstdate
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: doramon ที่ กันยายน 06, 2007, 12:01:07 PM
ครับ รอตอนเย็นจะดูให้ครับ

หรือ ไม่ อ. ท่านได้ว่างก็ตอบก่อนก็ได้ครับ
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: nan_it ที่ กันยายน 06, 2007, 14:06:57 PM
ผมคิดไม่ออกแล้วครับ ค่าที่ได้มามันเท่ากันหมดเลยครับ แนะนำหน่อยครับ
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: thannawe ที่ กันยายน 06, 2007, 14:22:14 PM
กำลังตรวจสอบให้ครับ รอแป๊ปนะครับ
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: SrWooD ที่ กันยายน 06, 2007, 14:47:27 PM
ยากจังครับ

ตรง WHERE Clause

อืมมม....

ว่าแต่ต้องการนับรวม bpd,bps,bw,pulse,temperature โดยไม่นับจำนวนช่องว่างและค่าที่เป็นศูนย์

หรือ นับ bpd,bps,bw,pulse,temperature แยกโดยที่แต่ละ field ไม่นับจำนวนช่องว่างและค่าที่เป็นศูนย์

ถ้าเป็นอย่างหลัง

ถ้าเป็นผมจะหาแยกทีละ field ครับ

น่าสนใจนะครับ query นี้

หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: thannawe ที่ กันยายน 06, 2007, 14:49:54 PM
select count(*)
from opdscreen op
left outer join ovst ov on ov.vn = op.vn
where op.bpd >0 and op.bps >0 and op.bw and op.pulse > 0 and temperature > 0
and ov.main_dep = '010'
and ov.vstdate between '2007-01-01' and '2007-08-31'

ต้องลองเอาไปตรวจสอบดูครับ ว่าถูกต้องหรือเปล่า แต่เงื่อนไข เยอะมาก
ถ้ากรอกข้อมูลไม่ครบมันจะไม่ขึ้นเลยนะครับ  
ลองค่อยๆ ลบทีละเงื่อนไขครับ รพ.ผม กรอกกันไม่ครบซักที pulse ไม่ค่อยกรอกกันเลยไม่ค่อยมีขึ้นครับ
ลบเงื่อนไขเอานะครับ   ได้จำนวนครั้งที่กรอกข้อมูลครบนะครับคำสั่งนี้
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: nan_it ที่ กันยายน 06, 2007, 15:28:15 PM
นับ bpd,bps,bw,pulse,temperature แยกโดยที่แต่ละ field ไม่นับจำนวนช่องว่างและค่าที่เป็นศูนย์
ครับ
ถ้า count ทีล่ะตัว จะได้ค่าถูกต้อง พอเพิ่มเป็น 2,3 ตัว ค่าที่ได้จะเท่ากันหมดเลย
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: SrWooD ที่ กันยายน 06, 2007, 15:31:09 PM
ต้องการทราบแค่ตัวเลข

หรือ

ต้องการนำไปใช้ใน Report Designer ครับ

ถ้าอย่างหลังใช้ variable ดีกว่าครับ
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: nan_it ที่ กันยายน 06, 2007, 15:39:45 PM
นำคำสั่งไปเก็บไว้ใน Custom Report  ครับ เพื่อให้เจ้าหน้าที่เรียกใช้งาน
แต่ถ้าต้องใช้ Variable ไม่ค่อยรู้เรื่องเลยครับ ต้องขอคำแนะนำอีกเยอะเลยครับ

หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: SrWooD ที่ กันยายน 06, 2007, 15:50:45 PM
งั้นคงต้องรอท่านผู้รู้ท่านอื่นครับ

ผมก็จะรอด้วยครับ

หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: doramon ที่ กันยายน 06, 2007, 16:24:49 PM
ต้องการทราบแค่ตัวเลข

หรือ

ต้องการนำไปใช้ใน Report Designer ครับ

ถ้าอย่างหลังใช้ variable ดีกว่าครับ

variable   variable   variable  variable  variable

ครับรับรองตรงใจ
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: SrWooD ที่ กันยายน 06, 2007, 16:27:53 PM

variable   variable   variable  variable  variable

ครับรับรองตรงใจ


ขอบคุณครับ อ.อ๊อด

ตรงใจผมเหมือนกัน

แต่อาจจะไม่ตรงใจคุณ nan_it ครับ
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: naj ที่ กันยายน 06, 2007, 16:28:53 PM
นั่นสินะ อ.อ๊อด ;)
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: woravet ที่ กันยายน 06, 2007, 16:34:31 PM
หรือจะลองแบบนี้มั๊ง
select ov.vstdate,count(op.hn) as hn
,sum(if(op.bpd>0,1,0)) as bpd
,sum(if(op.bps>0,1,0)) as pbs
,sum(if(op.bw>0,1,0)) as bw
,sum(if(op.pulse>0,1,0)) as pulse
,sum(if(op.temperature>0,1,0)) as temperature
from opdscreen op , ovst ov
where op.vstdate between "2007-08-01" and "2007-08-31" and op.vn = ov.vn
and ov.main_dep = "010"
group by ov.vstdate
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: rtumayo ที่ กันยายน 06, 2007, 18:52:42 PM
การใช้คำสั่ง sql มีข้อจำจัด เงือนไข  ถ้าเงืนไขเยอะๆผมว่าใช้ variable ดีกว่าครับ
ต้องแยก qury ครับ เช่น
select count(op.bpd)
from opdscreen op
left outer join ovst ov   on ov.vn=op.vn
where op.vstdate between "2007-05-03" and "2007-05-03"  and op.bpd<>''
 
 
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: manoi ที่ กันยายน 06, 2007, 19:00:21 PM
ต้องใช้แนวนี้ครับ

โค๊ด: SQL
  1. SELECT ov.vstdate,COUNT(o1.vn) AS bps_count,COUNT(o2.vn) AS bpd_count,
  2. COUNT(o3.vn) AS bw_count,COUNT(o4.vn) AS pulse_count,COUNT(o5.vn) AS temp_count
  3. FROM ovst ov
  4. LEFT OUTER JOIN opdscreen o1 ON o1.vn = ov.vn AND o1.bps > 0
  5. LEFT OUTER JOIN opdscreen o2 ON o2.vn = ov.vn AND o2.bpd > 0
  6. LEFT OUTER JOIN opdscreen o3 ON o3.vn = ov.vn AND o3.bw > 0
  7. LEFT OUTER JOIN opdscreen o4 ON o4.vn = ov.vn AND o4.pulse>0
  8. LEFT OUTER JOIN opdscreen o5 ON o5.vn = ov.vn AND o5.temperature > 0
  9. WHERE ov.vstdate BETWEEN "2007-09-01" AND "2007-09-06" AND ov.main_dep = "010"
  10. GROUP BY ov.vstdate
  11.  
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: rtumayo ที่ กันยายน 06, 2007, 19:18:01 PM
ขอบคุณครับ เยียมมากครับ
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: thannawe ที่ กันยายน 06, 2007, 22:29:26 PM
เทคนิคมากมาย
 ;D  ขอบคุณครับ
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: SrWooD ที่ กันยายน 06, 2007, 22:40:33 PM
Impossible

อ.MN ทำให้ข้อจำกัดทั้งหลายหมดไปครับ

ขอบคุณมากครับ
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: doramon ที่ กันยายน 06, 2007, 22:48:52 PM
สุดยอดจริงๆๆ ด้ัวย
 ;D ;D
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: nan_it ที่ กันยายน 07, 2007, 08:32:00 AM
ขอบคุณมากครับ
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: armds ที่ กันยายน 07, 2007, 08:40:09 AM
สุดยอดครับ
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: Khuad ที่ กันยายน 07, 2007, 09:34:07 AM
...ความรู้+ฝีมือ+ไหวพริบ+ประสบการณ์    สุดยอดมากเลยครับอาจารย์.... :D...
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: เกื้อกูล ครับ.. ที่ กันยายน 07, 2007, 09:58:39 AM
ต้องรีบเก็บไว้ใช้แล้วครับ...ขอบคุณ
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: nahos ที่ กันยายน 07, 2007, 09:59:06 AM
มาเก็บความรู้ ขอบคุณครับ
หัวข้อ: Re: คำสั่ง Count
เริ่มหัวข้อโดย: naj ที่ กันยายน 07, 2007, 10:02:32 AM
ตัวจริง ชัดเจน ;D :D