在 SQL 中,ROW_NUMBER()
函數(shù)用于為查詢結(jié)果集中的每一行分配一個(gè)唯一的數(shù)字。當(dāng)您需要嵌套使用 ROW_NUMBER()
函數(shù)時(shí),通常是在同一個(gè)查詢中為不同條件或分組分配行號。以下是一個(gè)嵌套 ROW_NUMBER()
函數(shù)的示例:
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;
在這個(gè)示例中,我們首先使用 WITH
子句創(chuàng)建了一個(gè)名為 RankedData
的臨時(shí)結(jié)果集。在這個(gè)結(jié)果集中,我們?yōu)槊恳恍蟹峙淞藘蓚€(gè)行號:row_num_1
和 row_num_2
。row_num_1
是基于 group_column
分組的行號,而 row_num_2
是基于 sort_column
的排序行號。
最后,我們從 RankedData
結(jié)果集中選擇了所有行,其中 row_num_1
為 1 或 row_num_2
為 1。這將返回每個(gè)分組的第一行以及按排序順序的第一行。