การใช้ฟังก์ชัน NZ ใน Crosstab Query ของ Microsoft Access

การใช้ฟังก์ชัน NZ ใน Crosstab Query ของ Microsoft Access
หากท่านใดเคยใช้ Crosstab Query ใน Microsoft Access จะพบว่ามีการแสดงค่าว่าง (Null) ในกรณีที่ไม่มีข้อมูลในคอลัมน์นั้น ๆ
ยกตัวอย่างเช่น ต้องการสรุปว่า ขายสินค้าให้ลูกค้าบริษัทใดเป็นยอดเงินเท่าใด ดังรูป

จะเห็นได้ว่ามีหลายรายการสินค้าที่ลูกค้าไม่ได้ซื้อ ทำให้มีค่าว่าง (Null) เกิดขึ้นเช่น บริษัท Alfreds Futterkiste ไม่ซื้อ สินค้า Chang เป็นต้น
ซึ่งหากเราต้องการให้เป็นค่า 0 แทนค่าว่าง (Null) นั้น เราสามารถเข้าไปแก้ไขโดยใส่ ฟังก์ชัน NZ ซึ่งเป็นการแปลงค่า Null ให้เป็นค่าต่างๆ ที่เราต้องการ ทั้งนี้ สามารถเข้าไปใส่ฟังก์ชันดังกล่าวได้ 2 ที่
1. SQL View

2. Expression Builder

ผลลัพธ์ที่ได้เป็นดังรูป

จากฟังก์ชัน NZ ตามตัวอย่างนั้น อธิบายได้ดังนี้ค่ะ
NZ(Sum(QOrders.Amount),0) แปลได้ว่า
ถ้า ผลรวมของฟิลด์ Amount ใน QOrders เป็นค่า Null ให้แสดงค่า 0
แต่ถ้าเราต้องการให้แสดงข้อความว่า N/A ก็สามารถทำได้
โดยเขียนฟังก์ชันเป็น NZ(Sum(QOrders.Amount),"N/A")
ทั้งนี้ N/A ต้องอยู่ภายใต้เครื่องหมาย double quote (") นั้น
เนื่องจาก N/A เป็น Constant ประเภท Text ค่ะ

ผลลัพธ์ที่ได้

แต่จากผลลัพธ์ที่ได้หลังจากใช้ฟังก์ชัน NZ แล้ว
จะเห็นว่า รูปแบบที่แสดงนั้นเพี้ยนไปจาก Query แรกที่ยังไม่ได้เปลี่ยนจากค่า Null เป็น 0 หรือ N/A
นั่นคือ ทศนิยมไม่แน่นอน รวมถึงไม่มีเครื่องหมาย $ ด้วย
วิธีการแก้ไข คือ ใช้ฟังก์ชัน Format ช่วยค่ะดังแสดงในรูป

ผลลัพธ์ที่ได้

ส่วนการใช้งานฟังก์ชัน Format นั้น เป็นการกำหนดให้แสดงรูปแบบตามที่ต้องการค่ะ
จากตัวอย่าง Format(Nz(Sum([QOrders].[Amount]),0),"$#,##0.00")
เป็นการกำหนดให้รูปแบบของค่าที่ได้จาก Nz(Sum([QOrders].[Amount]),0) เป็นรูปแบบ $#,##0.00
โดยที่ $#,##0.00 นั้นจะต้องอยู่ภายใต้เครื่องหมาย double quote (") ค่ะ
บทความนี้ต้องการจะแสดงให้เห็นว่า เราสามารถแก้ไขการแสดงผลของ Crosstab Query ได้ค่ะ
นั่นหมายถึงถ้าเรารู้จักฟังก์ชันต่างๆ เพิ่มขึ้น จะสามารถดัดแปลงแก้ไขได้ที่ SQL View หรือ Expression Builder ดังที่กล่าวมาแล้วค่ะ