เงื่อนไขเดิม เป็นการ ใช้ IF เพื่อแยกเวลา
SELECT hn,lo.vn,o.vstdate,o.vsttime
,if(vsttime<"08:00:00","M"
,if(vsttime<"16:00:00","D","N")) as v_time
FROM lab_order_service lo
LEFT OUTER JOIN ovst o on o.vn=lo.vn
WHERE vstdate BETWEEN '2015-05-05' and '2015-05-05'
เมื่อนำมาใช้ เปรียบได้ว่าตัวนี้เป็นตารางใหม่ที่สร้างขึ้นโดยการใช้ SUM รวมผลตามเงื่อนไขที่แยกออกอีกครั้ง
SELECT sum(if(q1.v_time="M",1,0)) as v_MidNight
,sum(if(q1.v_time="D",1,0)) as v_Day
,sum(if(q1.v_time="N",1,0)) as v_Night
FROM (SELECT hn,o.vn,o.vstdate,o.vsttime
,if(vsttime<"08:00:00","M"
,if(vsttime<"16:00:00","D","N")) as v_time
FROM lab_order_service lo LEFT OUTER JOIN ovst o on o.vn=lo.vn
WHERE vstdate BETWEEN '2015-05-05' and '2015-05-05') as q1
เป็นรูปแบบของ subquery อีกแบบหนึ่ง โดยการใช้ SUM และ IF เข้ามาช่วยในการแยกตามเงื่อนไข