151
การเขียน SQL Script / Re: คำสั่ง sum แต่ต้อง group by column อื่น ต้องทำไงครับ
« เมื่อ: สิงหาคม 23, 2010, 14:34:25 PM »
ขอบคุณครับ ได้แล้วครับ
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
... ถ้าต้องการได้ผลรวมของจำนวนใน dtvalue ของตาราง dtdetail2 โดยแยกเป็นราย vn และดูจากวันที่ที่มารับบริการด้วย
อย่างแรกเลยคงจะใช้การ join กับตาราง dtmain เพื่อนำวันที่รับบริการมาใช้ไม่ได้หรอกครับ เพราะข้อมูลที่ได้ออกมาจะผิดพลาดได้
เนื่องจากทั้งตาราง dtdetail2 และ dtmain ใน 1 vn อาจมีข้อมูลอยูในตารางอยู่มากกว่า 1 record ได้ครับ
ถ้า vn นั้นๆ มีอยู่แค่ตารางละ 1 record ก็ไม่เป็นไร แต่ถ้าสมมุติว่า vn นั้นมีข้อมูลอยู่ใน dtdetail2 และ dtmain ตารางละ 2 record เวลา join กันแล้วข้อมูลที่ได้ออกมาจะมี 4 record ครับ ไม่ใช่ 2 record ผลรวมของจำนวนใน dtvalue ที่ได้ออกมาก็จะมากเกินความเป็นจริงครับ
ถ้าต้องการใช้วันที่ที่มารับบริการด้วย ใช้การ join จากตาราง ovst ก็ได้ครับ ลองใช้คำสั่งตามข้างล่างดูนะครับ
select d.vn,sum(d.dtvalue)
from dtdetail2 d,ovst o
where o.vstdate between '2006-04-01' and '2006-06-30'
and d.vn = o.vn
and d.dtcode in ('405','410','416','421')
group by d.vn
......
ขอบคุณครับ แต่ยังไม่ได้ครับ คราวนี้มันออกมาแค่รายการเดีียวครับ แผ่นเดียว ทำไงดีครับ ช่วยด้วย
ไม่ทราบว่า ตรวจสอบดูในตาราง
select * from doctor_order_print
ดูว่ารายการที่จะผิดมีครบทุกตัวหรือเปล่าครับ
จากนั้น ช่วยบอกด้วยว่าใช้ แบบฟอร์ม การพิมพ์ จากโปรแกรม hosxp หรือว่า ใช้แบบสร้างเอง ครับ