表名: abc name (姓名) flag (标志 0为登陆 1为退出) time (时间)name flag time
123 0 2008-01-01 14:22:30
fgh 0 2008-02-01 15:32:15
fg 1 2008-03-01 12:12:12
123 1 2008-01-01 15:35:59使用一条sql语句 查询出如下结果
姓名 登陆 时间 退出 时间
123 登陆 2008-01-01 14:22:30 退出 2008-01-01 15:35:59
fgh 登陆 2008-02-01 15:32:15
. .
. .
. .或者 查询出这样的结果也行使用一条sql语句 查询出如下结果
姓名 登陆 时间 退出 时间
123 登陆 2008-01-01 14:22:30
123 退出 2008-01-01 15:35:59
fgh 登陆 2008-02-01 15:32:15
. .
. .
不想 使用 select * from abc
然后再 逐条判断输出(如果有上万条 岂不很慢)
123 0 2008-01-01 14:22:30
fgh 0 2008-02-01 15:32:15
fg 1 2008-03-01 12:12:12
123 1 2008-01-01 15:35:59使用一条sql语句 查询出如下结果
姓名 登陆 时间 退出 时间
123 登陆 2008-01-01 14:22:30 退出 2008-01-01 15:35:59
fgh 登陆 2008-02-01 15:32:15
. .
. .
. .或者 查询出这样的结果也行使用一条sql语句 查询出如下结果
姓名 登陆 时间 退出 时间
123 登陆 2008-01-01 14:22:30
123 退出 2008-01-01 15:35:59
fgh 登陆 2008-02-01 15:32:15
. .
. .
不想 使用 select * from abc
然后再 逐条判断输出(如果有上万条 岂不很慢)
123 0 2008-01-01 14:22:30
fgh 0 2008-02-01 15:32:15
fg 1 2008-03-01 12:12:12
123 1 2008-01-01 15:35:59
-----------------------------------------------------
select name ,
max(case flag when 0 then time end) 登陆时间,
max(case flag when 1 then time end) 退出时间
from abc
group by nameselect name ,
'登陆' 登陆,
max(case flag when 0 then time end) 登陆时间,
'退出' 退出,
max(case flag when 1 then time end) 退出时间
from abc
group by name