人物 事件 时间 小王 进公园 2006-03-13 10:00:00 小王 出公园 2006-03-03 18:00:00 小明 进商场 2006-03-13 19:00:00 (例如: 2006-03-13 15:00:00 )还在公园里的人员select 人物 from temp where 事件 in ('进公园','出公园') and 时间 <= to_date(2006-03-13 15:00:00,'yyyy-mm-dd hh24:mi:ss') group by 人物 having nvl(max(decode(事件,'出公园',时间)),date'3000-01-01')>max(decode(事件,'进公园',时间))
to tian00weiwei(weiwei)having nvl(max(decode(事件,'出公园',时间)),date'3000-01-01')>max(decode(事件,'进公园',时间))能解释下上面的语句什么意思吗?
select 人物 from temp where 事件 in ('进公园','出公园') and 时间 <= to_date(2006-03-13 15:00:00,'yyyy-mm-dd hh24:mi:ss') group by 人物 having nvl(max(decode(事件,'出公园',时间)),to_date(2006-03-13 15:00:00,'yyyy-mm-dd hh24:mi:ss'))<=max(decode(事件,'进公园',时间)) decode(事件,'出公园',时间)的意思是如果事件为‘出公园’,那么这个表达式的值为所对应的时间,如果事件不是‘出公园’,那么返回默认值,但由于未定默认值,所以返回null,decode(事件,'进公园',时间)同样处理 现在用time代替decode(事件,'出公园',时间),用time2代替decode(事件,'进公园',时间) max(time)我就不解释了,那么nvl(max(time),to_date(2006-03-13 15:00:00,'yyyy-mm-dd hh24:mi:ss'))的意思就是说如果没有‘出公园’的事见,那么就返回'2006-03-13 15:00:00',不然就返回max(time) 最后having nvl(max(time),'3000-01-01')>max(time2)的意思是出公园的时间小于进公园的时间的记录才符合条件,或者未出公园,所以用2006-03-13 = 进公园时间也是符合条件的
小王 进公园 2006-03-13 10:00:00
小王 出公园 2006-03-03 18:00:00
小明 进商场 2006-03-13 19:00:00
(例如: 2006-03-13 15:00:00 )还在公园里的人员select 人物
from temp
where 事件 in ('进公园','出公园')
and 时间 <= to_date(2006-03-13 15:00:00,'yyyy-mm-dd hh24:mi:ss')
group by 人物
having nvl(max(decode(事件,'出公园',时间)),date'3000-01-01')>max(decode(事件,'进公园',时间))
from temp
where 事件 in ('进公园','出公园')
and 时间 <= to_date(2006-03-13 15:00:00,'yyyy-mm-dd hh24:mi:ss')
group by 人物
having nvl(max(decode(事件,'出公园',时间)),to_date(2006-03-13 15:00:00,'yyyy-mm-dd hh24:mi:ss'))<=max(decode(事件,'进公园',时间))
decode(事件,'出公园',时间)的意思是如果事件为‘出公园’,那么这个表达式的值为所对应的时间,如果事件不是‘出公园’,那么返回默认值,但由于未定默认值,所以返回null,decode(事件,'进公园',时间)同样处理
现在用time代替decode(事件,'出公园',时间),用time2代替decode(事件,'进公园',时间)
max(time)我就不解释了,那么nvl(max(time),to_date(2006-03-13 15:00:00,'yyyy-mm-dd hh24:mi:ss'))的意思就是说如果没有‘出公园’的事见,那么就返回'2006-03-13 15:00:00',不然就返回max(time)
最后having nvl(max(time),'3000-01-01')>max(time2)的意思是出公园的时间小于进公园的时间的记录才符合条件,或者未出公园,所以用2006-03-13 = 进公园时间也是符合条件的