如何将以下pl sql转换为sql。 B.STATUS(+)=1
在tsql中不起作用。
Select * from A,B where A.ID=B.ID(+)
WHERE B.STATUS(+)=1
这不会返回mssql中的行,因为它不理解B.STATUS是可选的
Select * from A LEFT JOIN B ON A.ID=B.ID
WHERE B.STATUS=1
答案 0 :(得分:5)
当条件应用于WHERE子句中的外部表时,OUTER JOIN将更改为INNER JOIN。在ON子句中,它保持为OUTER。
你需要推断谓词“in”
Select * from A LEFT JOIN B ON A.ID = B.ID AND B.STATUS=1
OR
Select * from
A LEFT JOIN
(SELECT * FROM B WHERE B.STATUS=1) B1 ON A.ID = B1.ID
答案 1 :(得分:0)
只需将其设为OR“(b.status = 1或b.status IS NULL)”