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
引发语法错误。
你会怎么做?
答案 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个示例记录以准确显示您想要实现的目标,那将会非常有用。