MERGE INTO site_visits sv USING (SELECT TRUNC(SYSDATE) AS d FROM dual) src ON (sv.visit_date = src.d) WHEN MATCHED THEN UPDATE SET sv.visit_count = sv.visit_count + 1 WHEN NOT MATCHED THEN INSERT (visit_date, visit_count) VALUES (src.d, 1)