151
การเขียน SQL Script / Re: คำสั่ง sum แต่ต้อง group by column อื่น ต้องทำไงครับ
« เมื่อ: สิงหาคม 23, 2010, 10:23:01 AM »... ถ้าต้องการได้ผลรวมของจำนวนใน 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
... ...
ขอบคุณครับ แล้อยากได้ผล sum ที่เป็นตัวเลขเลย ทำไงครับ ไม่อยากได้เป็น record ครับ เพราะตัวนี้ได้เป็น record ครับ