簡體   English   中英

case語句中的Rank函數

[英]Rank Function inside case statement

我正在嘗試在 case 語句中使用 Rank 函數並給出 where rank_number = 1 ,它會在 where Condition 中拋出錯誤。 有人可以幫我如何在case語句中的where子句中分配等級嗎

您不能在查詢的WHERE子句中使用RANK()分析函數(或任何其他分析函數)。 秩計算的結果尚不可用。 但它們在SELECT子句或ORDER BY子句中可用。 一種解決方法是子查詢:

SELECT *
FROM
(
    SELECT t.*, RANK() OVER (ORDER BY blah) rnk
    FROM yourTable t
) s
WHERE rnk = 1;

一些數據庫支持QUALIFY子句,可以在其中使用分析函數。 假設您使用的是 Teradata 或 BigQuery 之類的東西,您可以使用:

SELECT *
FROM yourTable
WHERE 1 = 1
QUALIFY RANK() OVER (ORDER BY blah) = 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM