ใช้ CASE WHEN ภายใน SUM() เพื่อเลือกค่าที่มากกว่าในแต่ละแถวแล้วรวมกัน
ตัวอย่างการใช้งาน
1. สร้างตารางและข้อมูล
mysql> create table DemoTable (X int, Y int); mysql> insert into DemoTable values(20,30), (40,15), (80,85);
2. ข้อมูล
+------+------+ | X | Y | +------+------+ | 20 | 30 | | 40 | 15 | | 80 | 85 | +------+------+
3. Query หาผลรวมค่าสูงสุดแต่ละแถว
mysql> SELECT SUM(CASE WHEN X > Y THEN X ELSE Y END) FROM DemoTable;
ผลลัพธ์
+----------------------------------------+ | SUM(CASE WHEN X > Y THEN X ELSE Y END) | +----------------------------------------+ | 155 | +----------------------------------------+
คำนวณ: แถว1: max(20,30)=30, แถว2: max(40,15)=40, แถว3: max(80,85)=85 → 30+40+85=155
วิธีอื่น: ใช้ GREATEST() (MySQL)
SELECT SUM(GREATEST(X, Y)) FROM DemoTable;
GREATEST() คืนค่าสูงสุดจากรายการ รองรับหลายคอลัมน์ จัดการ NULL ได้ (คืน NULL หากมี NULL)
กรณีต้องการจัดการ NULL
SELECT SUM(COALESCE(GREATEST(X, Y), 0)) FROM DemoTable; -- หรือ SELECT SUM(CASE WHEN X > Y THEN X ELSE Y END) FROM DemoTable;