我目前正在使用类似于以下内容的审计日志表:
ID | EventTime | AccessID | AccessType | Status | Final
------------------------------------------------------------------------------
1 | 2013/02/10 01:01:01 | NULL | 123 | 335 | OK
2 | 2013/02/10 01:01:01 | 985521 | NULL | 66 | OK
....
41 | 2013/02/10 07:07:07 | NULL | 456 | 335 | OK
42 | 2013/02/10 07:07:07 | 113228 | NULL | 66 | OK
我需要选择的是
AccessID
和 AccessType
成一行,即:AccessID | AccessType
------------------------
985521 | 123
113228 | 456
AccessID
始终是唯一的,并且仅在 Status = 66
所在的行中可用。 AccessType
仅在 Status = 335
处可用。EventTime
始终为状态 335 和 66 共享。我试过按事件时间对数据进行分组,使用子选择等,但还没有完全得到我需要的最终结果。
附加信息
每天添加大约 100000 行。
对于每个 EventTime,大约有 40 行,所有行都包含不同的信息(列数比下面提供的示例多)
最佳答案
试试这个方法:
select max(AccessID) as AccessID, max(AccessType) as AccessType
from audit_log
where Status in (335,66)
group by EventTime
关于sql - 组合多行的 SELECT 语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17570795/