Myslím, že jste špatně pochopili, k čemu slouží sloučení.
Očekával bych, že váš stůl bude něco jako:
CREATE TABLE TABLE_FOR_TESTS (
d DATE,
t NUMBER(8),
CONSTRAINT TABLE_FOR_TESTS_PK PRIMARY KEY (d)
)
a potom příkaz merge by mohl být:
MERGE INTO TABLE_FOR_TESTS t
USING (SELECT trunc(sysdate) d FROM DUAL) s
ON (s.d = t.d)
WHEN MATCHED THEN
UPDATE SET t = t+1
WHEN NOT MATCHED THEN
INSERT (d, t) VALUES (trunc(sysdate), 1)
kde je spojení na primárním klíči tabulky a buď se aktualizuje, nebo vkládá v závislosti na tom, zda záznam pro danou hodnotu PK existuje.
To by mělo maximálně jeden záznam za den a t by obsahovalo počet provedení tohoto příkazu za den (za předpokladu, že na TABLE_FOR_TESTS není žádný jiný DML).
Poznámka:sysdate sám o sobě obsahuje časovou komponentu. trunc(sysdate) jej odstraní a nastaví čas na 00:00:00.