[ WITH $with_query$ [ , ... ] ] MERGE INTO { ONLY $target_table_name$ | $target_table_name$ [ * ] } [ [ AS ] $target_alias$ ]
    USING $data_source$ ON $join_condition$
    $when_clause$ [ ... ]

where $data_source$ is:

{ { ONLY $source_table_name$ | $source_table_name$ [ * ] } | ( $source_query$ ) } [ [ AS ] $source_alias$ ]

where $when_clause$ is:

{ WHEN MATCHED [ AND $condition$ ] THEN { $merge_update$ | $merge_delete$ | DO NOTHING } |
    WHEN NOT MATCHED [ AND $condition$ ] THEN { $merge_insert$ | DO NOTHING } }

where $merge_insert$ is:

INSERT [( $column_name$ [ , ... ] )]
//    [ OVERRIDING { SYSTEM | USER } VALUE ]
    VALUES ( { $expression$ | DEFAULT } [ , ... ] ) |
    INSERT DEFAULT VALUES

where $merge_update$ is:

UPDATE SET { $column_name$ = { $expression$ | DEFAULT } |
    ( $column_name$ [ , ... ] ) = ( { $expression$ | DEFAULT } [ , ... ] ) } [ , ... ]

where $merge_delete$ is:

DELETE
