在sql server中的where语句之后使用(+)

mcb*_*mcb 0 t-sql sql-server oracle plsql

我怎样才能将以下plsql转换为tsql.B.STATUS(+)=1在tsql中不起作用.

  Select * from A,B where A.ID=B.ID(+)
     WHERE B.STATUS(+)=1
Run Code Online (Sandbox Code Playgroud)

这不会返回mssql中的行,因为它不理解B.STATUS是可选的

 Select * from A LEFT JOIN B ON A.ID=B.ID
WHERE B.STATUS=1
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 5

当条件应用于WHERE子句中的外部表时,OUTER JOIN将更改为INNER JOIN.在ON子句中,它保持为OUTER.

你需要推断谓词"in"

 Select * from A LEFT JOIN B ON A.ID = B.ID AND B.STATUS=1
Run Code Online (Sandbox Code Playgroud)

要么

 Select * from
     A LEFT JOIN
     (SELECT * FROM B WHERE B.STATUS=1) B1 ON A.ID = B1.ID
Run Code Online (Sandbox Code Playgroud)