Oracle11g 缺少右括号

Oracle11g 缺少右括号,oracle11g,Oracle11g,下面的Oracle SQL缺少右括号 SELECT COUNT(*) FROM OAS_HRMS_LEAVE_DETAIL WHERE(((trunc(TO_DATE('12/10/2014','mm /dd/yyyy')) BETWEEN trunc(LEAVE_FROM_DATE) AND trunc(LEAVE_TO_DATE))OR(trunc(TO_DATE('12/11 /2014','mm/dd/yyyy')) BETWEEN(trunc(LEAVE_FROM_DATE) AN

下面的Oracle SQL缺少右括号

SELECT COUNT(*) FROM OAS_HRMS_LEAVE_DETAIL WHERE(((trunc(TO_DATE('12/10/2014','mm  /dd/yyyy')) BETWEEN trunc(LEAVE_FROM_DATE) AND trunc(LEAVE_TO_DATE))OR(trunc(TO_DATE('12/11  /2014','mm/dd/yyyy')) BETWEEN(trunc(LEAVE_FROM_DATE) AND trunc(LEAVE_TO_DATE)))) AND    (EMPLOYEE_NO='US/Z/054' AND APPROVAL_STATUS IN ('Active','Approved')))

很难阅读…也不知道你在什么情况下尝试去做

SELECT COUNT(*) 
FROM OAS_HRMS_LEAVE_DETAIL 
WHERE(((trunc(TO_DATE('12/10/2014','mm/dd/yyyy')) 
BETWEEN trunc(LEAVE_FROM_DATE)AND trunc(LEAVE_TO_DATE)) 
OR (trunc(TO_DATE('12/11  /2014','mm/dd/yyyy')) 
BETWEEN(trunc(LEAVE_FROM_DATE) AND trunc(LEAVE_TO_DATE)))//)// <- one extra added here?
AND(EMPLOYEE_NO='US/Z/054' AND APPROVAL_STATUS IN ('Active','Approved')))

尝试删除第二个Truncleave_from_date和Truncleave_to_date的括号


看不到任何缺少右括号的问题,但您确实有很多括号!我会尽量减少它们的使用——在有and和OR的地方,你确实需要它们,而不是在任何地方

以下是一个简化版本:

SELECT COUNT(*) FROM OAS_HRMS_LEAVE_DETAIL 
WHERE
 (   DATE '2014-12-10' BETWEEN trunc(LEAVE_FROM_DATE) AND trunc(LEAVE_TO_DATE)
  OR DATE '2014-12-11' BETWEEN trunc(LEAVE_FROM_DATE) AND trunc(LEAVE_TO_DATE)
  )
AND EMPLOYEE_NO='US/Z/054' 
AND APPROVAL_STATUS IN ('Active','Approved')
注:

使用日期文字,例如日期“2014-12-10”,而不是TO_date函数调用 不需要真实的日期 另外,您是否真的需要截断休假日期和休假日期?如果这些只是日期而不是时间部分,则应验证它们,例如检查约束,然后您也可以删除这些trunc:

SELECT COUNT(*) FROM OAS_HRMS_LEAVE_DETAIL 
WHERE
 (   DATE '2014-12-10' BETWEEN LEAVE_FROM_DATE AND LEAVE_TO_DATE
  OR DATE '2014-12-11' BETWEEN LEAVE_FROM_DATE AND LEAVE_TO_DATE
  )
AND EMPLOYEE_NO='US/Z/054' 
AND APPROVAL_STATUS IN ('Active','Approved')
SELECT COUNT(*) FROM OAS_HRMS_LEAVE_DETAIL 
WHERE
 (   DATE '2014-12-10' BETWEEN LEAVE_FROM_DATE AND LEAVE_TO_DATE
  OR DATE '2014-12-11' BETWEEN LEAVE_FROM_DATE AND LEAVE_TO_DATE
  )
AND EMPLOYEE_NO='US/Z/054' 
AND APPROVAL_STATUS IN ('Active','Approved')