db2 - 如何从同一个表中获取最小日期和下一个日期

时间:2014-01-27 11:31:35

标签: db2

我有一个带有日期属性的表,我需要进行查询以获取MIN日期和下一个MIN日期

我试过了:

select min(SC.TIMESTAMP) as minDate, result.TIMESTAMP
from Event SC 
INNER JOIN 
(SELECT TIMESTAMP from Event
 HAVING  TIMESTAMP > min(SC.TIMESTAMP) 
) as result  on  result.BUSINESSID1 = SC.BUSINESSID1
where SC.BUSINESSSTEP = 'CONTAINER_PLACING_EVENT'
and SC.LOCATIONCODE = '1';

请问您如何做到这一点?

先谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用ROW_NUMBER() OLAP Function

SELECT *
FROM (
    SELECT 
         TIMESTAMP
        ,ROW_NUMBER() OVER (
                 PARTITION BY BUSINESSSTEP, LOCATIONCODE
                 ORDER BY TIMESTAMP ASC
             ) AS RN
    FROM EVENT
    WHERE BUSINESSSTEP = 'CONTAINER_PLACING_EVENT'
      AND LOCATIONCODE = '1'
) A
WHERE RN < 3

这将以行而不是列的形式返回,但它可以为您提供所需的内容。如果您认为原始查询将返回多行(对于多个实体),则可以更改PARTITION BY子句以包含使它们不同的列。

答案 1 :(得分:0)

也许您可以将查询重新排列为以下格式:

select
    min(TS), min(TS2)
from
    event,
    (select TS as TS2 from event where TS > (select min(TS) from event))

根据需要添加额外标准。我会尝试重写你的,但目前还不完全清楚计数的标准是什么。如果您期望多行(例如,每个LOCATIONCODE的最小值和最小值2),那么您可能需要GROUP BY

此外,我不会调用列TIMESTAMP,因为它是一个保留字。