You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为aValue与bValue的唯一组合分配rowNum2列

解决方案

你的需求是为aValue与bValue的每一组唯一组合分配独立编号rowNum2,不受rowNum和Id影响。原查询的问题在于仅按aValue分区,且ROW_NUMBER()会在分区内生成递增序号,无法实现跨分组的唯一组合编号。

以下是两种可行的正确实现方式:

方法一:使用DENSE_RANK()函数(推荐)

DENSE_RANK()会为每个唯一的(aValue, bValue)组合分配连续的编号,相同组合保持同一编号,实现最简单直接:

SELECT 
    rowNum, Id, aValue, bValue, 
    DENSE_RANK() OVER (ORDER BY aValue, bValue) AS rowNum2
FROM #temptable
ORDER BY rowNum2, Id;

方法二:通过CTE提取唯一组合再关联

如果需要对组合的排序逻辑做更复杂的调整,可以先提取所有唯一组合并分配编号,再与原表关联:

WITH UniqueCombos AS (
    SELECT DISTINCT aValue, bValue,
           ROW_NUMBER() OVER (ORDER BY aValue, bValue) AS rowNum2
    FROM #temptable
)
SELECT t.rowNum, t.Id, t.aValue, t.bValue, uc.rowNum2
FROM #temptable t
JOIN UniqueCombos uc ON t.aValue = uc.aValue AND t.bValue = uc.bValue
ORDER BY uc.rowNum2, t.Id;

两种方法都能生成符合要求的rowNum2,其中方法一更简洁高效,适合大多数场景。

内容的提问来源于stack exchange,提问作者ichachan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 03:15:09