有个操作日志表,要按用户查询操作信息,如何写SQL?
有个表Log,有字段id,type,time。type=0表示用户进入,type=1表示用户离开 
 Log 
 id      type      time 
 0            0            1 
 0            1            2 
 1            0            4 
 1            1            5 
 0            0            6 
 0            1            8 
 2            0            9   
 现在希望显示如下信息 
 Out 
 id   in_time   out_time 
 0      1                     2 
 0      6                     8 
 1      4                     5 
 2      9                     null 
 按用户显示其进入时间和离开时间 
 如何写SQL?
------解决方案--------------------select id,case when type=0 then time end as in_time,case when type=1 then time end as out_tim 
 from Log
------解决方案--------------------select id,time as in_time,out_time=(select top 1 time from log b where b.type=1 and a.id=b.id and b.time> a.time order by time) from log a 
 where type=0
------解决方案--------------------用循环写?
------解决方案--------------------select 
     a.id,a.time as in_time,min(b.time) as out_time 
 from 
     log a 
 left join 
     log b 
 where 
     a.id=b.id and a.time <b.time 
 group by 
     a.id,a.time
------解决方案--------------------我那个不对,想错了! :(
------解决方案--------------------收藏 ---
------解决方案--------------------提点意见,首先要保证进入和离开这两条数据一定要有健全机制保证成对出现,那么查询才有意义。
------解决方案--------------------将语句里有log的地方换成你的查询语句,两头加上括号即可
------解决方案--------------------都换,或者你用个视图来代替也行
------解决方案--------------------maple0112() ( ) 信誉:100    Blog   加为好友  2007-04-13 11:42:23  得分: 0         
    提点意见,首先要保证进入和离开这两条数据一定要有健全机制保证成对出现,那么查询才有意义。        
 同意以上观点,你这个表设计的就有问题 
------解决方案--------------------SELECT intime.Id,intime.time in_time,min(outtime.time) out_time 
 FROM ( 
 	SELECT id,time 
 	FROM Log intime 
 	WHERE type=0 
 )intime LEFT JOIN ( 
 	SELECT id,time 
 	FROM Log outtime 
 	WHERE type=1 
 )outtime 
 	ON intime.id=outtime.Id 
 	AND intime.time <outtime.time 
 GROUP BY intime.Id,intime.time 
 ORDER BY intime.Id     
 表结构设计有问题,不然也不至于如此麻烦。
------解决方案--------------------mark
------解决方案--------------------学习
------解决方案--------------------mark
------解决方案--------------------应该再加一个字段group2,标识那两条是属于同组的纪录(需要在写程序的时候合理判断),即为1,2,3.....然后sql就很容易查了