Sql server 2008 SQL Server 2008中的左加入
我有一个在Oracle中运行良好的查询,我已将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
(+)
关键字替换为左连接
。。它在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中删除-摆脱旧习惯!