Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

การรันคิวรี SQL จากเดือนเฉพาะใน SAP DB

เมื่อฟิลด์ T0.Name เป็นชนิดตัวอักษร (char) และต้องการเรียงลำดับตามเดือน โดยเริ่มจากเดือนสิงหาคม (เดือนที่ 8) เป็นเดือนแรกของปีบัญชี ให้ใช้คำสั่ง ORDER BY กรณีเงื่อนไข (CASE WHEN) ดังนี้

คำสั่ง ORDER BY สำหรับปีบัญชีเริ่มเดือนสิงหาคม

ORDER BY CASE
  WHEN CAST(LEFT(T0.Name, 2) AS INT) >= 8
  THEN CAST(LEFT(T0.Name, 2) AS INT) - 8
  ELSE CAST(LEFT(T0.Name, 2) AS INT) + 4
END

คำอธิบาย:

  • LEFT(T0.Name, 2) - ดึง 2 ตัวอักษรแรก (สมมติเป็นรูปแบบ MM เช่น 01, 02, ..., 12)
  • CAST(... AS INT) - แปลงเป็นตัวเลข
  • WHEN ... >= 8 - เดือน 8-12 (สิงหาคม-ธันวาคม) ลบ 8 → ได้ 0-4
  • ELSE ... + 4 - เดือน 1-7 (มกราคม-กรกฎาคม) บวก 4 → ได้ 5-11
  • ผลลัพธ์: เดือนสิงหาคม=0, กันยายน=1, ..., ธันวาคม=4, มกราคม=5, ..., กรกฎาคม=11

การประยุกต์: ปรับตัวเลข 8 และ 4 ตามเดือนเริ่มต้นของปีบัญชีองค์กร (Fiscal Year)