[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

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

s7

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