我目前正在使用类似于以下内容的审计日志表:

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

我需要选择的是 AccessIDAccessType 成一行,即:
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/

10-11 19:21