select max (DECODE (dis_id, NULL, NULL, transaction_date) from T,
当dis_id 都不为null的时候 没有返回最大的日期。
其实
select DECODE (dis_id, NULL, NULL, transaction_date) from T
与
select transaction_date from T
返回的数据是一样的
但是使用
select max ( transaction_date) from T
可以返回最大的日期 而
select max (DECODE (dis_id, NULL, NULL, transaction_date) from T
却不能返回最大的日期。
欢迎各位给见议,谢谢!
------解决思路----------------------
select max(DECODE(dis_id,null,null,transaction_date))
from(
select sysdate transaction_date,1 dis_id from dual
union all
select sysdate-2,null dis_id from dual)
反馈结果是:27-11月-14
不应该没有返回最大的日期呀
------解决思路----------------------
用decode来判断空值有点奇怪,不知道是否和版本支持有关
可以替换成nvl2(dis_id, transaction_date,null)
------解决思路----------------------
decode(a,b,c,d)
里面,c和d类型要一致,你这里c为null,被当成了字符串,于是d发生了隐式转换:to_char(transaction_date)
对于字符串来说,11-MAY-14要比07-NOV-14大