通过Nullness of field排序

时间:2013-06-04 09:01:32

标签: sql oracle oracle10g sql-order-by

Hello all :)我很难在Oracle 10g中提出正确的SQL语法。我想提出这样的事情:

SELECT
  LAST_VALUE FIELD_INFO OVER(ORDER BY FIELD_1 IS NULL, FIELD_2, FIELD_1)
FROM TABLE_1

FIELD_1 IS NULL引发语法错误。

你会怎么做?

2 个答案:

答案 0 :(得分:4)

NULLs First

这个表达式是一个紧凑的Oracle语法,为Nulls返回0,为非Nulls返回1

Order by NVL2(FIELD_1,1,0), ...

或者您可以使用案例陈述:

Order by Case when FIELD_1 is null then 0 else 1 end, ...

NULLs Last

Order by NVL2(FIELD_1,0,1)

Order by Case when FIELD_1 is null then 1 else 0 end, ...

此方法中可能是小数优化:

Order by Case when FIELD_1 is null then null else 0 end nulls last, ...

......通过要求稍微减少的排序区域。

答案 1 :(得分:0)

我认为你应该制作一个复合字段并按它排序

COALESCE(FIELD_1,'[lots of spaces to ensure they go first]')||FIELD_2

但如果您发布10-20个示例记录以准确显示您想要实现的目标,那将会非常有用。