我有一个带有日期属性的表,我需要进行查询以获取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';
请问您如何做到这一点?
先谢谢
答案 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
,因为它是一个保留字。