sql >> Base de Datos >  >> RDS >> Oracle

Convierta una consulta de Oracle SQL en una consulta de Azure SQL

Este merge de Oracle la consulta tiene solo un WHEN NOT MATCHED cláusula y sin WHEN MATCHED , así que básicamente eso es insert y not exists :

insert into studies(study_id, study_date)
select x.*
from (values(@study_id, @study_date)) as x(study_id, study_date)
where not exists (select 1 from studies s1 where s1.study_id = x.study_id)

Esto es lógicamente equivalente a la consulta original de Oracle.

En cuanto a su pregunta original:SQL Server admite su propio sabor o merge declaración , cuya sintaxis es diferente a la de Oracle. Volverías a escribir Oracle merge como:

merge studies as s
using (values(@study_id, @study_date)) as x(study_id, study_date)
on (s.study_id = x.study_id)
when not matched 
    then insert (study_id, study_date) values(x.study_id, x.study_date)