2017-08-24 86 views
-3

我通常使用LEADLAG功能從Oracle這樣的:鉛和甲骨文LAG功能使用複雜的排序

... 
LEAD(id, 1) OVER (ORDER BY sorted_field) AS prev 
... 
ORDER BY sorted_field DESC 

,但我想使用複雜的排序是這樣的:

... 
LEAD(id, 1) OVER (ORDER BY CASE WHEN id = 42 THEN 1 ELSE 2 END, sorted_field) AS prev 
... 
ORDER BY sorted_field DESC 

有人知道我可以在OVER子句中使用複雜排序嗎?

+1

你現在的代碼有問題嗎?在分析函數內是否可以通過「CASE」表達式進行排序? –

+1

它應該只是工作,不是嗎?怎麼了? –

+0

結果不是例外... – kicaj

回答

3

我可以在OVER子句中使用複雜排序嗎?

是的,可以。

您的代碼

LEAD(id, 1) OVER (ORDER BY CASE WHEN id = 42 THEN 1 ELSE 2 END, sorted_field) 

在語法上是有效的。