Перевод MS Access Query для SQL Сервер - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь воссоздать запрос, который был выполнен в MS Access, а теперь обрабатывается в SQL Серверной среде. Я понимаю, что некоторые из синтаксиса SQL отличаются в Access, чем в SQL Server. Есть ли где-нибудь в Интернете, где указаны основные различия, или поможет перевести один на другой?

Это запрос, который мне нужно обновить, чтобы использовать на SQL Сервер:

  UPDATE
    dbo.TPR00100
  INNER JOIN (
    dbo.UPR10302
    LEFT JOIN dbo.B3980280 ON dbo.TPR10302.COMPTRNM = dbo.B3980280.COMPTRNM
  ) ON dbo.TPR00100.STAFFID = dbo.TPR10302.STAFFID
  SET
    dbo.B3980280.COMPTRNM = dbo.TPR10302.comptrnm,
    dbo.B3980280.BI_LOC_ID = dbo.TPR00100.locatnid
  WHERE
    (((dbo.B3980280.COMPTRNM) Is Null))

Каковы основные аспекты, которые необходимо обрабатывать по-разному в SQL серверной транзакции для этого запроса?

1 Ответ

1 голос
/ 24 марта 2020

Если вам удобно использовать для этого обновляемый CTE:

with cte as (
    select
        b39.comptrnm b39_comptrnm
        b39.bssi_loc_id b39_bssi_loc_id,
        tpr.comptrnm tpr_comptrnm,
        tpr.locatnid tpr_locatnid
    from dbo.tpr00100 tpr
    inner join dbo.upr10302 upr on tpr.staffid = upr.staffid
    inner join dbo.b3980280 b39 on tpr.comptrnm = b39.comptrnm
    where b39_comptrnm is null
)
update cte 
set b39_comptrnm = tpr_comptrnm, b39_bssi_loc_id = tpr_locatnid

Примечание. Я не совсем уверен, почему таблица для обновления left join редактируется в исходном запросе, поэтому я перевернул ее к внутреннему соединению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...