可以将事件按照开始事件和结束事件分在两个字查询中,依据操作进行连接,即可计算出操作时长,可以在子查询中组合开始事结束事件的其他条件。大概是这么一种形式: select …… from ( select 事件,操作,时间,…… from tabName where 标识开始或结束事件的字段=开始事件 and 开始事件的其他条件 ) tabA join ( select 事件,操作,时间,…… from tabName where 标识开始或结束事件的字段=结束事件 and 结束事件的其他条件 ) tabB on tabA.操作 = tabB.操作where tabB.时间 - tabA.时间 > 设定的时长
可以将开始事件和结束事件分在两个字查询中,即可计算出操作所用的时间,其他条件可以分在两个字查询中大概是这么一种形式: select …… from ( select 事件,操作,时间,…… from tabName where 标识开始或结束事件的字段=开始事件 and 开始事件的其他条件 ) tabA join ( select 事件,操作,时间,…… from tabName where 标识开始或结束事件的字段=结束事件 and 结束事件的其他条件 ) tabB on tabA.操作 = tabB.操作 where tabB.时间 - tabB.时间 > 设定的时长
您好,感谢您回答我下面的问题,您的答案很有启发,但还没有完全,您看是否能再帮帮忙,我好将100分给您。结果集中还要包括没有结束的事件。谢谢 ===================================================================================没有结束事件就用“当前时间”减去开始事件的时间吗?如果是这样,It is so easy!select …… from ( select 事件,操作,时间,…… from tabName where 标识开始或结束事件的字段=开始事件 and 开始事件的其他条件 ) tabA left join ( select 事件,操作,时间,…… from tabName where 标识开始或结束事件的字段=结束事件 and 结束事件的其他条件 ) tabB on tabA.操作 = tabB.操作 where nvl(tabB.时间,sysdate) - tabA.时间 > 设定的时长
select ……
from
(
select 事件,操作,时间,……
from tabName
where 标识开始或结束事件的字段=开始事件 and 开始事件的其他条件
) tabA join
(
select 事件,操作,时间,……
from tabName
where 标识开始或结束事件的字段=结束事件 and 结束事件的其他条件
) tabB on tabA.操作 = tabB.操作where tabB.时间 - tabA.时间 > 设定的时长
select ……
from
(
select 事件,操作,时间,……
from tabName
where 标识开始或结束事件的字段=开始事件 and 开始事件的其他条件
) tabA join
(
select 事件,操作,时间,……
from tabName
where 标识开始或结束事件的字段=结束事件 and 结束事件的其他条件
) tabB on tabA.操作 = tabB.操作
where tabB.时间 - tabB.时间 > 设定的时长
===================================================================================没有结束事件就用“当前时间”减去开始事件的时间吗?如果是这样,It is so easy!select ……
from
(
select 事件,操作,时间,……
from tabName
where 标识开始或结束事件的字段=开始事件 and 开始事件的其他条件
) tabA left join
(
select 事件,操作,时间,……
from tabName
where 标识开始或结束事件的字段=结束事件 and 结束事件的其他条件
) tabB on tabA.操作 = tabB.操作
where nvl(tabB.时间,sysdate) - tabA.时间 > 设定的时长