在 SQL 中,ROW_NUMBER() 函數用于為查詢結果集中的每一行分配一個唯一的數字。當您需要嵌套使用 ROW_NUMBER() 函數時,通常是在同一個查詢中為不同條件或分組分配行號。以下是一個嵌套 ROW_NUMBER() 函數的示例:
WITH RankedData AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY group_column ORDER BY sort_column) AS row_num_1,
ROW_NUMBER() OVER (ORDER BY sort_column) AS row_num_2
FROM
your_table
)
SELECT
*
FROM
RankedData
WHERE
row_num_1 = 1 OR row_num_2 = 1;
在這個示例中,我們首先使用 WITH 子句創建了一個名為 RankedData 的臨時結果集。在這個結果集中,我們為每一行分配了兩個行號:row_num_1 和 row_num_2。row_num_1 是基于 group_column 分組的行號,而 row_num_2 是基于 sort_column 的排序行號。
最后,我們從 RankedData 結果集中選擇了所有行,其中 row_num_1 為 1 或 row_num_2 為 1。這將返回每個分組的第一行以及按排序順序的第一行。