Вы делите на refnum
, что представляется уникальным. Означает, что оба значения всегда 1
.
SELECT q.*
FROM (SELECT q.*,
ROW_NUMBER() OVER (ORDER BY REFNUM ) AS sequenceCorrect,
ROW_NUMBER() OVER (ORDER BY TSTAMP) AS sequenceActual
FROM queries q
) q
WHERE sequenceCorrect <> sequenceActual
ORDER BY REFNUM;
Вы также можете сделать это с помощью функции single window:
SELECT q.*
FROM (SELECT q.*,
MAX(TSTAMP) OVER (ORDER BY REFNUM) as MAX_TSTAMP
FROM queries q
) q
WHERE MAX_TSTAMP <> TSTAMP
ORDER BY REFNUM;
EDIT:
Если вы хотите, чтобы ордера поменялись местами, используйте lag()
:
SELECT q.*
FROM (SELECT q.*,
LAG(TSTAMP) OVER (ORDER BY REFNUM) as PREV_TSTAMP
FROM queries q
) q
WHERE PREV_TSTAMP > TSTAMP
ORDER BY REFNUM;