BMS-HOSxP Community

HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: vampire ที่ พฤศจิกายน 14, 2009, 14:46:59 PM

หัวข้อ: ทำใน varible ครับ อยากให้ count(hn) แล้ว Group by hn ได้ไหมครับ
เริ่มหัวข้อโดย: vampire ที่ พฤศจิกายน 14, 2009, 14:46:59 PM
ทำใน varible ครับอยากให้ count(hn) แล้ว Group by hn ด้วย แต่ออก 1 ครับ

Value := GetSQLDoubleData('select count(hn) from ovst '+
'where vstdate between "'+ISO2Date(GetUserParameter(0),'yyyy-mm-dd')+'" and " '+ISO2Date(GetUserParameter(1),'yyyy-mm-dd')+'"  '+
'Group by hn');

ต้องแก้อย่างไรครับ ท่าน อาจารย์ครับ
หัวข้อ: Re: ทำใน varible ครับ อยากให้ count(hn) แล้ว Group by hn ได้ไหมครับ
เริ่มหัวข้อโดย: armds ที่ พฤศจิกายน 14, 2009, 15:54:22 PM
ตัดคำว่า  Group by hn  ออก  ก็น่าจะได้นะครับ  ลองดูครับ

Value := GetSQLDoubleData('select count(hn) from ovst '+
'where vstdate between "'+ISO2Date(GetUserParameter(0),'yyyy-mm-dd')+'" and " '+ISO2Date(GetUserParameter(1),'yyyy-mm-dd')+'"  ');
หัวข้อ: Re: ทำใน varible ครับ อยากให้ count(hn) แล้ว Group by hn ได้ไหมครับ
เริ่มหัวข้อโดย: Svl2Nuk3 ที่ พฤศจิกายน 14, 2009, 20:08:53 PM
งงกับความต้องการ   ต้องการนับอะไรครับ

ขอเดาว่าความต้องการก็คือ  จะนับ  visit  จาก  ovst   โดยนับว่าแต่ละคนเคยมารับบริการกี่ครั้งในช่วงเวลาที่กำหนดถูกหรือเปล่าครับ  (แต่ข้อมูลพวกนี้เค้าไม่ค่อยนับกันอยู่แล้ว)

ถ้าตามนี้  output  ก็จะต้องมี  2  ค่าคือ
   -  hn
   -  จำนวนครั้งที่มา  visit   เพราะ  1 record  คือ 1 visit

แต่  ???  ทำไมถึงใช้  Variable ดึงอ่ะครับเพราะ  variable จะใช้ดึงค่า ๆ เดียว  (ไม่เคยทำแบบหลายฟิล์สักทีแม้แต่ดึงทีละหลาย reccord  ก็ยังไม่เคยทำเลยครับ   คิดว่าไม่น่าจะทำได้)

ผมเสนอว่าลองใช้  DBPipeline  ตัวอื่นดูครับ   เช่น 
ChangeDBPipeLineLink1SQL(<sql>);
ChangeReportSQL(<sql>);

<sql>  คือคำสั่ง  sql  ที่ต้องการ  เมื่อเขียนโค้ดเสร็จ  previews 1 รอบ  แล้วกับมาหน้าออกแบบรายงาน
สังเกตด้านขวาตรง  Datatree  กดเลือกตัวที่เราใช้ครับ  เช่นถ้าใช้คำสั่ง  ChangeDBPipeLineLink1SQL(<sql>);  ก็ไปกดที่  DBPipeLineLinks1
แล้วจะมี  Fields For DBPipeline  ให้เราเลือกครับ  ฟิลพวกนี้มาจากคำสั่ง  sql  ของเราที่ใส่ไปในฟังก์ชัน
ส่วนค่าต่าง ๆ  ที่จะใส่ใน report ก็สามารถนำ  DBText  มาวางได้เลย (เลือก DBPiepeline  ให้ถูกตัวด้วย)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ส่วนคำสั่ง  sql  ที่ให้มา  ถ้าต้องการ  group by hn  จริง ๆ   ให้ใช้   Group by count(hn)   แทนครับ
แต่ผลลัพท์ที่ได้คงเอาไปทำอะไรต่อไม่ได้   เพราะค่าที่ได้คือค่า ๆ เดียวครับ
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
แต่ถ้าตัด  Group by  ออก    จะเป็นการนับ visit  ผู้ป่วยนอกทั้งหมดตามช่วงเวลาที่กำหนดครับ
ที่ต้องการน่าจะเป็นตัวนี้หรือเปล่าครับ



หัวข้อ: Re: ทำใน varible ครับ อยากให้ count(hn) แล้ว Group by hn ได้ไหมครับ
เริ่มหัวข้อโดย: SoRnKuNg ที่ พฤศจิกายน 15, 2009, 15:39:22 PM
เท่าที่ดูและผมตีความโจทย์ออกมาแล้ว เหมือนกับว่า ต้องการนับเป็น คน คือ 1 คนมา 2 visit ก็นับเป็น 1
ที่ผมใช้คือตัวนี้ครับ


Value := GetSQLDoubleData('select count(distinct(hn)) from ovst '+
'where vstdate between "'+ISO2Date(GetUserParameter(0),'yyyy-mm-dd')+'" and " '+ISO2Date(GetUserParameter(1),'yyyy-mm-dd')+'"  ');


2,3,4,...,N visit แต่นับ 1
หัวข้อ: Re: ทำใน varible ครับ อยากให้ count(hn) แล้ว Group by hn ได้ไหมครับ
เริ่มหัวข้อโดย: vampire ที่ ธันวาคม 20, 2009, 14:57:23 PM
ตามที่ ท่าน SoRnKuNg  บอกละครับ ผมคงบอกตามต้องการไม่ชัดเจน
ได้ข้อมูลแล้วครับ ขอบคุณมากเลยครับ ท่าน อ. ทุกท่าน ;D ;D