在使用 ROW_NUMBER()
函数时,如果你希望跳过 NULL
或 0
值,可以通过结合 CASE
语句来实现。以下是一些基础概念和相关示例:
NULL
或 0
值)来定制行号的分配。假设我们有一个名为 Sales
的表,其中包含 ProductID
和 Quantity
列,我们希望为 Quantity
大于 0
的行分配一个行号。
SELECT
ProductID,
Quantity,
ROW_NUMBER() OVER (ORDER BY CASE WHEN Quantity > 0 THEN Quantity ELSE NULL END) AS RowNum
FROM
Sales
ORDER BY
Quantity DESC;
CASE
语句检查 Quantity
是否大于 0
。如果是,则使用 Quantity
进行排序;否则,使用 NULL
。由于 NULL
在排序时会被忽略,因此只有 Quantity
大于 0
的行会被赋予行号。Quantity
降序排列,以便更好地查看行号分配情况。CASE
语句或嵌套窗口函数。通过这种方式,你可以灵活地控制行号的分配,确保只对符合条件的行进行编号。
领取专属 10元无门槛券
手把手带您无忧上云