Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Converter consulta Oracle SQL em consulta SQL do Azure


Esta merge do Oracle consulta tem apenas um WHEN NOT MATCHED cláusula e não WHEN MATCHED , então basicamente isso é insert e 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)

Isso é logicamente equivalente à consulta original do Oracle.

Quanto à sua pergunta original:o SQL Server suporta seu próprio sabor ou merge declaração , cuja sintaxe é diferente da Oracle. Você reescreveria o 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)