【发布时间】:2016-02-24 08:57:52
【问题描述】:
我有一个视图,其中结果按序列的降序返回。结果集中的一列是correlation_id,对于一堆行是相同的。我希望按照创建时间戳的顺序在correlation_id的分区内应用排序。
数据: -------------------------- 序列 | CORRELATION_ID | CR_TIMESTAMP 9 | Z | 22/FEB/16 03:00:19.191000000 下午 8 | Z | 22/FEB/16 02:00:26.577000000 下午 7 | Z | 22/FEB/16 01:07:58.171000000 下午 6 |一个 | 22/FEB/16 03:07:58.171000000 下午 5 |一个 | 22/FEB/16 02:07:58.171000000 下午 我想要的是保持原始顺序,仅按 CR_TIMESTAMP 在分区内排序: -------------------------- 序列 | CORRELATION_ID | CR_TIMESTAMP | SRLNO 7 | Z | 22/FEB/16 03:07:58.171000000 下午 | 1 8 | Z | 22/FEB/16 02:00:26.577000000 下午 | 2 9 | Z | 22/FEB/16 01:07:58.171000000 下午 | 3 5 |一个 | 22/FEB/16 02:07:58.171000000 下午 | 1 6 |一个 | 22/FEB/16 03:07:58.171000000 下午 | 2 我试过(没有成功) 选择 V.*, ROW_NUMBER() OVER(按 CORRELATION_ID 分区 ORDER BY CR_TIMESTAMP ASC) 作为来自 A_VIEW V 的 SRLNO;我的尝试结果为:最终结果按 CORRELATION_ID 升序排列。即所有 A,然后所有 B,然后 .. 所有 Z。在每个分区中,排名正确地按 CR_TIMESTAMP 的顺序排列。
【问题讨论】:
-
我不确定我是否完全理解您。您的查询有什么问题?
-
在外面通过
SEQ下单。 -
add ORDER BY CORRELATION_ID ,ROW_NUMBER() OVER (PARTITION BY CORRELATION_ID ORDER BY CR_TIMESTAMP ASC)
-
能否请您告诉我您希望在分区后看到什么类型的数据
标签: sql database oracle window-functions