Sql server 2008 SQL Server 2008中的左加入

Sql server 2008 SQL Server 2008中的左加入,sql-server-2008,left-join,Sql Server 2008,Left Join,我有一个在Oracle中运行良好的查询,我已将(+)关键字替换为左连接。。它在SQL Server 2008中不起作用 请帮帮我:我做错了什么?提前谢谢 SELECT ARM_KEYID, ARD_KEYID, FCT_FACTORYID, FCT_NAME, AUC_AUDITTYPEID, ATM_DESCRIPT, LIN_LINEID, LIN_DESCRIPTION, CEL_CELLID, CEL_DESCRIPTION,ARM_EMPID, AUDIT

我有一个在Oracle中运行良好的查询,我已将
(+)
关键字替换为
左连接
。。它在SQL Server 2008中不起作用

请帮帮我:我做错了什么?提前谢谢

SELECT 
    ARM_KEYID, ARD_KEYID, FCT_FACTORYID, FCT_NAME, 
    AUC_AUDITTYPEID, ATM_DESCRIPT, LIN_LINEID, LIN_DESCRIPTION, 
    CEL_CELLID, CEL_DESCRIPTION,ARM_EMPID, AUDITOR.EMP_NAME,         
    ARM_REPDATE, AUC_WEEKNO,AUC_FROMDATE, AUC_TILLDATE,
    (SELECT OPD_DESCRIPT 
     FROM OPERATIONSDETAILS OPD 
     WHERE OPD.OPD_KEYID = OPDDETAILS.OPD_PARENTID),
    OPD_OPNO, OPD_DESCRIPT,
    CLD_OPNO, CLD_DESCRIPT, ALM_KEYID,
    CASE 
       WHEN ALD_PRIORITY = 'H' THEN 'High' 
       WHEN ALD_PRIORITY = 'M' THEN 'Medium'
       WHEN ALD_PRIORITY = 'L' THEN 'Low'
    END AS ALD_PRIORITY,
    ARD_FEEDBACK, ARD_NCCLASSIFICATION, ALD_NCACTION,
    OWNER.EMP_NAME, dpt_description , ALD_TARGETDATE, 
    COMPLETED.EMP_NAME, ALD_COMPLETIONDATE, ALD_COMPREMARKS,
    CASE 
       WHEN ALD_STATUS = 'Y' 
          THEN DATEDIFF(DAY, ALD_COMPLETIONDATE, ALD_TIMESTAMP) 
          ELSE DATEDIFF(DAY, GETDATE(), ALD_TIMESTAMP) 
    END AS PENDING_DAYS,
    CASE 
       WHEN ALD_STATUS = 'Y' THEN 'COMPLETED' 
       WHEN ALD_STATUS = 'N' THEN 'PENDING' 
    END AS LAD_STATUS  
FROM 
    AUDITREPORTMASTER, AUDITREPORTDETAILS,
    CHECKLISTDETAILS, AUDITCALENDAR, OPERATIONSMASTER, 
    OPERATIONSDETAILS OPDDETAILS, ACTIONLISTMASTER, 
    ACTIONLISTDETAILS, AUDITTYPEMASTER, CELLMASTER, EMPLOYEEMASTER AUDITOR, EMPLOYEEMASTER OWNER,
    EMPLOYEEMASTER COMPLETED, FACTORYMASTER,LINEMASTER, departmentmaster  
WHERE 
    ARD_NCSTATUS = 'N' 
    AND ARD_RECNO = '1' 
    AND AUC_ACTIVE = 'Y'
    AND ARM_KEYID = ARD_MASTERID 
    AND CLD_KEYID = ARD_CKDETAILID 
    AND AUC_KEYID = ARM_CALENDARID  
    AND AUC_OPDKEYID = OPD_KEYID 
    AND OPM_KEYID = OPD_OPMASTERID 
    AND ATM_KEYID = AUC_AUDITTYPEID 
    AND CEL_CELLID = AUC_LINEID 
    AND LIN_LINEID = AUC_SECTIONID 
    AND ARM_EMPID = AUDITOR.EMP_EMPLOYEEID 
    AND ALD_OWNER =* OWNER.EMP_EMPLOYEEID  
    AND DPT_DEPARTMENTID *= OWNER.emp_departmentid  
    AND ALD_COMPLETEDBY =* COMPLETED.EMP_EMPLOYEEID 
    AND FCT_FACTORYID = AUC_FACTORYID  
    AND ALD_AUDITDETAILID  = ARD_KEYID 
    AND ALM_KEYID  = ALD_MASTERID
    AND ARM_ACTIVE = 'Y' 
    AND AUC_AUDITTYPEID = 'ATM/01' 
ORDER BY 
    FCT_FACTORYID, OPM_AUDITTYPEID, CEL_CELLID, ARM_REPDATE;

您得到的错误是什么?乍一看,where子句中似乎有一个问题,条件中有多余的*
实际上,我已经用(+)运算符替换了Oracle查询,以进行左右连接,但其显示的错误类似于“查询包含不允许的外部连接请求”。此错误仅适用于sql server 2008中的*=左外部连接。。请帮助我解决语法问题,尝试更改以下链接中提到的语法,根据共享的链接修改查询,但未达到预期结果。。一些错误…-在ANSI-92 SQL标准(25年前)中,用正确的ANSI
JOIN
语法替换了老式的逗号分隔表列表样式,不鼓励使用它。同样,使用
*=
=*
定义联接的方法也将很快从SQL Server中删除-摆脱旧习惯!