我有一张简单的table
+--------+------------+
| REFNUM | TSTAMP |
+--------+------------+
| 1 | 2018-JUN-1 |
| 2 | 2018-JUN-3 |
| 3 | 2018-JAN-1 |
| 4 | 2018-JUN-4 |
| 5 | 2018-JUN-6 |
| 6 | 2018-JAN-2 |
+--------+------------+
3号和6号记录的日期顺序不一致。我想要一个查询从我的表中返回refnum的3和6。基于类似的问题,我构建了一个查询:
SELECT REFNUM FROM
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY REFNUM ORDER BY REFNUM ) AS sequenceCorrect,
ROW_NUMBER() OVER (PARTITION BY REFNUM ORDER BY TSTAMP) AS sequenceActual
FROM queries
)
AS yourTableSequenced
WHERE
sequenceCorrect <> sequenceActual
ORDER BY REFNUM
但我总是得到一个空的结果。有人能解释一下为什么以及如何改正吗?
3条答案
按热度按时间t98cgbkg1#
你的分区依据
refnum
,这似乎是独一无二的。这意味着两个值总是1
.您也可以使用单个窗口函数来执行此操作:
编辑:
如果你特别想要那些顺序颠倒的,那么使用
lag()
:wvmv3b1j2#
这个带有子查询的简单查询(假设
TSTAMP
是一个DATE
列):在这里试试。希望有帮助。
nimxete23#
假设id之间可能存在间隙,通过检查当前tstamp是否小于前一个id的tstamp: