每列具有不同的ORDER BY

时间:2013-06-04 09:40:58

标签: sql oracle oracle10g sql-order-by

Hello all :)我想根据其他列的特定顺序在一列中选择一些值,并对下一列使用不同的顺序。

我现在正在使用它,但它无法实现我打算做的事情:

SELECT
  LAST_VALUE(FIELD_INFO_1) OVER (ORDER BY FIELD_A),
  LAST_VALUE(FIELD_INFO_2) OVER (ORDER BY FIELD_B)
FROM TABLE_1

我正在翻转FIELD_BORDER BY的符号,订单保持不变:/

另外,我正在使用LAST_VALUE,但我只想根据ORDER BY获取最后一行。也许LAST会更好,但我不知道它会如何适合这里。

2 个答案:

答案 0 :(得分:0)

不确定你在寻找什么,但听起来你是对的,需要最后的功能:

SELECT
  max(FIELD_INFO_1) KEEP (DENSE_RANK LAST ORDER BY FIELD_A),
  max(FIELD_INFO_2) KEEP (DENSE_RANK LAST ORDER BY FIELD_B)
FROM TABLE_1

答案 1 :(得分:0)

这更像是一个分区问题,我最终使用了:

SELECT
  LAST_VALUE(FIELD_INFO_1) OVER (
    ORDER BY FIELD_A RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
  ),
  LAST_VALUE(FIELD_INFO_2) OVER (
    ORDER BY FIELD_B RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
  )
FROM TABLE_1