BMS-HOSxP Community

HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: ~ L~ อิสระเสรี ~ L~ ที่ ตุลาคม 19, 2009, 13:59:26 PM

หัวข้อ: ปรึกษาเรื่องการทำรายงาน การใช้ยาของ ER ในช่วงเวลา 16.00 ถึง 8.00 ของอีกวัน
เริ่มหัวข้อโดย: ~ L~ อิสระเสรี ~ L~ ที่ ตุลาคม 19, 2009, 13:59:26 PM
เนื่องจากว่าต้องการข้อมูลการใช้ยาของ ER ในช่วงเวลาดังกล่าว คือ สมมุติว่า ข้อมูล วันที่ 2009-10-18 เวลา 16.00.00 น. ถึง วันที่ 2009-10-19 เวลา 8.00.00 น. ต้องเขียนคำสั่งอย่างไรครับ เนื่องจากทุกวันนี้หน้ารายงานจะถูกแยกเป็น 2 กะ คือ กะบ่าย 16.00.00 น. - 00.00.00 น.  กับ กะดึก 00.00.01 น. - 08.00.00 น. โดยรายงานจะต้องทำ 2 อันตลอด จึงอยากจะให้การใช้ยาทั้ง 2 กะเอามารวมกัน แล้วออกใบเดียว  ตัวอย่างโคดนะครับ

นี่ของกะบ่าย

select concat(b.name,' ',strength) as drugname,sum(qty),units,b.unitprice ,sum(qty*b.unitprice) as total,a.dep_code,department,count(hn),dosageform
from opitemrece a
left outer join drugitems b on a.icode=b.icode
left outer join kskdepartment c on a.dep_code=c.depcode
where a.icode like'1%'
and qty>=1
and vstdate between'2009-08-25'and'2009-08-25'
and vsttime between'16:00:00'and'24:00:00'
and a.dep_code in('011','040')
group by a.icode,b.name,strength,units,dosageform
order by b.dosageform,b.name

นี่ของกะดึก

select concat(b.name,' ',strength) as drugname,sum(qty),units,b.unitprice ,sum(qty*b.unitprice) as total,a.dep_code,department,count(hn),dosageform
from opitemrece a
left outer join drugitems b on a.icode=b.icode
left outer join kskdepartment c on a.dep_code=c.depcode
where a.icode like'1%'
and qty>=1
and vstdate between'2009-08-25'and'2009-08-25'
and vsttime between'00:00:00'and'07:45:00'
and a.dep_code in('011','040')
group by a.icode,b.name,strength,units,dosageform
order by b.dosageform,b.name

จะสังเกตุได้ว่าเปลี่ยนเฉพาะเวลาเท่านั้นเอง แต่ผมทำยังไงมันก็ไม่ยอมเข้ากันสักทีเป็นงง ??? ??? รบกวน อ. และ ผู้รู้ช่วยชี้แนะด้วยนะครับ พอดีไม่ค่อยคุ้นกับโปรแกรมเท่าไหร่ กำลังศึกษาอยู่ ขอบคุณล่วงหน้านะครับ :D :D :D :D
หัวข้อ: Re: ปรึกษาเรื่องการทำรายงาน การใช้ยาของ ER ในช่วงเวลา 16.00 ถึง 8.00 ของอีกวัน
เริ่มหัวข้อโดย: nahos ที่ ตุลาคม 19, 2009, 14:05:36 PM
set @t1 = unix_timestamp('2008-09-01')+time_to_sec('15:30:01');
set @t2 = unix_timestamp('2008-09-02')+time_to_sec('08:00:00');
select  a.icode,concat(b.name,' ',strength,' (',b.units,')') as drugname ,sum(a.qty) as total,dosageform,b.unitprice, sum_price, a.vstdate
FROM opitemrece a
LEFT OUTER JOIN drugitems b ON a.icode=b.icode
WHERE
(
(unix_timestamp(a.rxdate)+time_to_sec(a.rxtime) between @t1 and @t2
AND time_to_sec(rxtime) > time_to_sec(vsttime))
OR
( time_to_sec(rxtime) < time_to_sec(vsttime)
AND unix_timestamp(ADDDATE(a.rxdate,1))+time_to_sec(a.rxtime) between @t1 and @t2)
)
AND a.icode LIKE'1%'
AND dep_code  in ('011')
AND a.vstdate between'2008-06-01'and'2013-06-02'
group by   a.icode,b.name,strength,b.units,dosageform
order by dosageform,b.name

เอามาจากในนี้แหละครับ
หัวข้อ: Re: ปรึกษาเรื่องการทำรายงาน การใช้ยาของ ER ในช่วงเวลา 16.00 ถึง 8.00 ของอีกวัน
เริ่มหัวข้อโดย: armds ที่ ตุลาคม 19, 2009, 14:46:10 PM
ลองแบบนี้ดูครับ

where  concat(vstdate," ",vsttime) between "2009-08-25 16:00:00" and "2009-08-26 07:45:00"
หัวข้อ: Re: ปรึกษาเรื่องการทำรายงาน การใช้ยาของ ER ในช่วงเวลา 16.00 ถึง 8.00 ของอีกวัน
เริ่มหัวข้อโดย: ~ L~ อิสระเสรี ~ L~ ที่ ตุลาคม 20, 2009, 07:42:17 AM
ขอบคุณมากนะครับสำหรับทุกคำตอบ เดี๋ยวผมขอลองก่อนนะครับ ;D ;D ;D