17,382
社区成员




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' AND
A.CANCEL_DT > TO_DATE('2013-01-26', 'YYYY-MM-DD')) OR
A.SF_BILL_STATUS = 'I')
OR A.SF_BILL_STATUS = 'I
OR TRIM(A.SF_BILL_STATUS) = 'I'
请问这是为什么呢? (A.SF_BILL_STATUS = 'C' AND
A.CANCEL_DT > TO_DATE('2013-01-26', 'YYYY-MM-DD'))
的结果显示出来才对.
minitoy兄, 这段SQL的逻辑没问题, 需要先取 SF_BILL_STATUS = 'C' 并且有时间限制 CANCEL_DT > 2013-01-26. 然后再取 SF_BILL_STATUS = 'I' 的, 对与这个条件是没有时间限制的.
我查过相关的文档, 这两个条件的结果是不会受影响的. 但是这里确实取不出来, 我以为这应该是个BUG. 但是在Metalink上, 查不到相关的信息. 所以还需要数据库的高手来解决这个问题.. OR A.SF_BILL_STATUS = 'I
还是查SF_BILL_STATUS,但是这个字段的值是C,所以你查询不到结果。你加上其他的条件查询的又是另外一个字段了,所以能查询出结果。