0

別のテーブルの特定の値が「999」であるかどうかに基づいてテーブルを更新しようとしています。以下はコードです。私はデータベースを横断しているので、構文について少し混乱しました。

次のエラーが表示されます: SQL エラー: キーワード「左」付近の構文が正しくありません。

    declare @ProcessDate datetime
set @ProcessDate=getdate()

update ${BccrDatabase}..ReturnsHeader
  left join ${JdeDatabase}.f47011 poh on --Temp Header
    poh.SYEDOC = ReturnsHeader.DocumentNumber and poh.SYEDCT = 'EP'
  left join ${JdeDatabase}.f4201 soh on --Prod Header
    soh.SHKCOO = poh.SYEKCO 
    and soh.SHDOCO = poh.SYDOCO
    and soh.SHDCTO = poh.SYEDCT
  left join ${JdeDatabase}.f4211 sod on --Production Detail
    sod.SDKCOO = soh.SHKCOO
    and sod.SDDOCO = soh.SHDOCO
    and sod.SDDCTO = soh.SHDCTO 
  left join jde_crp.crpdta.f42119 hist on --History Detail
    hist.sddoco = soh.SHDOCO and
    hist.sdkcoo = soh.SHKCOO and
    hist.sddcto = soh.SHDCTO
 set
  SentToEdiDate=@ProcessDate
where 
  SentToEdiDate is null 
  and ApprovalStepID=4 -- Complete
  and DocumentBranchPlant=@BranchPlant
  and sod.SDNXTR is not null or hist.SDNXTR is not null 
  and sod.SDNXTR = '999' or hist.SDNXTR = '999'
4

1 に答える 1

2

私が正しく理解している場合、コードは次のようになります。

declare @ProcessDate datetime
set @ProcessDate=getdate()

update ${BccrDatabase}..ReturnsHeader
set SentToEdiDate=@ProcessDate
FROM ${BccrDatabase}..ReturnsHeader
    left join ${JdeDatabase}.f47011 poh on --Temp Header
        poh.SYEDOC = ReturnsHeader.DocumentNumber and poh.SYEDCT = 'EP'
    left join ${JdeDatabase}.f4201 soh on --Prod Header
        soh.SHKCOO = poh.SYEKCO 
        and soh.SHDOCO = poh.SYDOCO
        and soh.SHDCTO = poh.SYEDCT
    left join ${JdeDatabase}.f4211 sod on --Production Detail
        sod.SDKCOO = soh.SHKCOO
        and sod.SDDOCO = soh.SHDOCO
        and sod.SDDCTO = soh.SHDCTO 
    left join jde_crp.crpdta.f42119 hist on --History Detail
        hist.sddoco = soh.SHDOCO and
        hist.sdkcoo = soh.SHKCOO and
        hist.sddcto = soh.SHDCTO
where 
    SentToEdiDate is null 
    and ApprovalStepID=4 -- Complete
    and DocumentBranchPlant=@BranchPlant
    and sod.SDNXTR is not null or hist.SDNXTR is not null 
    and sod.SDNXTR = '999' or hist.SDNXTR = '999'

一般的な構造は次のとおりです。

UPDATE a
    SET a.YourColumn = newValue
FROM Table1 AS a
JOIN Table2 AS b
    ON a.JoinColumn = b.JoinColumn
WHERE ...
于 2013-02-26T19:02:09.450 に答える