ผลลัพธ์จากการใช้ Max และ Last ของเครื่องมือ Totals ใน Query
สำหรับใครที่เคยใช้ Query ใน MS Access เพื่อสืบค้นข้อมูล น่าจะเคยใช้เครื่องมือ Totals ( S ) เพื่อสรุปผลข้อมูลกันมาบ้างแล้ว
บางท่านอาจใช้ GroupBy , Sum หรือ Count ซึ่งจะให้ผลลัพธ์ที่แตกต่างกันไป
และอาจมีหลาย ๆ ท่าน เคยใช้ Max กับ Last แล้วไม่เห็นความแตกต่าง
อันเนื่องจากข้อมูลที่สืบค้นมีค่าที่มากสุดและค่าล่าสุดเหมือนกัน
ดังนั้น บทความนี้ จะกล่าวถึงความแตกต่างของผลลัพธ์จาก Query ที่ได้จากการใช้ Max และ Last
ลองพิจารณาข้อมูลดิบของตาราง PriceHistry ที่แสดงราคาต่อหน่วยของผลิตภัณฑ์ต่าง ๆ
โดยราคาดังกล่าวมีการบันทึกเวลาที่ปรับราคาที่ฟิลด์ DateTime

หากเราต้องการหาผลลัพธ์จาก Query เพื่อตอบคำถามดังนี้
1.อยากทราบราคาล่าสุดที่ Update ในแต่ละผลิตภัณฑ์ เป็นราคาเท่าไหร่
และตั้งราคานั้น ๆ เมื่อใด
2.อยากทราบราคาที่มากที่สุด ในแต่ละผลิตภัณฑ์ เป็นราคาเท่าไหร่
และตั้งราคานั้น ๆ เมื่อใด
จากคำถาม เราน่าจะเลือกใช้ Max หรือ Last ได้ถูกต้อง เนื่องจากแปลตรง ๆ อยู่แล้ว นั่นคือ
-> Max ใช้เพื่อหาค่าที่มากสุด
-> Last ใช้เพื่อหาค่าที่มีการใส่ข้อมูล
เราลองมาดูผลการสืบค้น และ วิธีการสืบค้นกันดีกว่า
1.อยากทราบราคาล่าสุดที่ Update ในแต่ละผลิตภัณฑ์ เป็นราคาเท่าไหร่
และ ตั้งราคานั้น ๆ เมื่อใด
เราสามารถใช้ Last ที่ฟิลด์ UnitPrice และ ฟิลด์ Date Time ได้เลย ดังรูป

และ ผลลัพธ์ที่ได้คือ

2.อยากทราบราคาที่มากที่สุด ในแต่ละผลิตภัณฑ์ เป็นราคาเท่าไหร่
และ ตั้งราคานั้น ๆ เมื่อใด
ซึ่ง คำตอบที่ถูกต้อง คือ

แต่ ถ้าเราสืบค้น โดยใช้ First หรือ Last ที่ ฟิลด์ DateTime ผลลัพธ์ที่ได้จะไม่ถูกต้อง
ผลลัพธ์ดังรูป


![DLookUp("datetime","histryprices","unitprice=" & [unitprice])](https://old.9experttraining.com/sites/default/files/styles/max_850/public/articles/images/function-dlookup.png?itok=4CyL9H-h)
ทั้งนี้ตัวอย่างการใช้ Dlookup ในกรณีนี้
เป็นการหา DateTime ของ UnitPrice สูงสุดที่มีเพียง DateTime เดียวเท่านั้น
แต่ถ้า UnitPrice สูงสุด ในผลิตภัณฑ์ใดใด มีได้หลาย Record
คงต้องมีการใช้ฟังก์ชันอื่นเพิ่มด้วย หรือ ไม่ต้องใช้ฟังก์ชันใดๆ เลยก็ได้
ขึ้นอยู่กับผลลัพธ์ที่ต้องการสืบค้นค่ะ











