[SQL Server] SELECT แปลง Column ที่เป็น null ให้เป็น 0

หลายครั้งที่ต้องเจองานในการเขียน SQL ประเภทการหาผลรวม (SUM) ของรายการ ตามเงื่อนไข A, B, C, D และอื่นๆจิปาถะ ลองมาดูตัวอย่างกัน

เตรียมข้อมูล

  • กำหนดโครงสร้างตาราง OrderTx ดังรูป
s0
  • กำหนดข้อมูลให้ตาราง ดังนี้
s1

ความต้องการ(โจทย์)

มาดูโจทย์ เราต้องการหาผลรวมของ Unit เฉพาะรายการขาย(BUY) ที่ยืนยันแล้ว(ISCONFIRM) และมีวันขายสินค้าระหว่างวันที่ 1-Oct-2013 ถึง วันที่ 10-Oct-2013 โดยสามารถเขียน Query ได้ ดังนี้

s4

ปัญหา

หากเรามีรายการใหม่ขึ้นมา ได้แก่การ รายการประเภทซื้อเชื่อ(BUY_CREDIT) พอทดสอบ Query พบว่าได้ค่า NULL เพราะ ไม่มีข้อมูลที่ตรงตามเงื่อนไข แต่ถ้าระบบส่งข้อมูลยังโปรแกรมที่เราพัฒนาขึ้น USER คงไม่เข้าใจ และอาจจะเกิด ERROR ขึ้นมาได้

s6

วิธีการแก้ไข

ใช้ฟังก์ชัน (function) coalesce(<column>, 0) เพื่อแปลงค่า NULL เป็นค่าที่่ต้องการ เช่น 0 ดัง QUERY ดังนี้

สรุป

การเขียนโปรแกรม แต่ละแบบเราควรดักความผิดพลาด หรือจัดการกับมันตั้งแต่เนิ่นๆ เพื่อให้โปรแกรมที่เราพัฒนานั้นมีความเชื่อถือ และมีผลลัพธ์ที่ถูกต้อง


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.