Oracle11g 缺少右括号
下面的Oracle SQL缺少右括号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
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')