还是查SF_BILL_STATUS,但是这个字段的值是C,所以你查询不到结果。你加上其他的条件查询的又是另外一个字段了,所以能查询出结果。 [解决办法] 你同一个字段用AND,又OR,为什么不用直接用括号括起来OR呢? 你可以这样试试: SELECT A.SF_BILL_STATUS FROM SYSADM.PS_SM_TAX_INV_REG1 A WHERE A.INVOICE_DT BETWEEN TO_DATE('2013-01-10', 'YYYY-MM-DD') AND TO_DATE('2013-01-12', 'YYYY-MM-DD') AND ((A.SF_BILL_STATUS = 'C' OR A.SF_BILL_STATUS = 'I') AND A.CANCEL_DT > TO_DATE('2013-01-26', 'YYYY-MM-DD')) 不知道是不是符合您的需求,但是这种才是最直接明了的SQL. [解决办法] #5,同感,查询成功执行了,但没有查询结果。 [解决办法] 把加上了OR A.SF_BILL_STATUS = 'I' 和没有加 OR A.SF_BILL_STATUS = 'I' 这两个sql的执行计划都拿出来先看看。我觉得应该从执行计划上面着手 [解决办法]