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

如何为Analysis表中按优先级排序的ReceptionId分组生成连续序号

解决Analysis表中按排序顺序生成ReceptionId分组连续序号的问题

问题分析

你需要的是按Analysis表的排序规则(当日Patient_OrdNumber_ByNumberOfRequiredAnalysis)给连续的ReceptionId分组分配唯一连续序号,直接用DENSE_RANK()按ReceptionId排序会导致序号基于ReceptionId本身的顺序,而非实际报表展示的分组顺序,这就是你之前未得到预期结果的原因。

正确实现思路

核心是先确定每个ReceptionId分组在排序后的结果集中的起始位置,再基于这个起始位置生成连续的组序号,确保序号与报表展示的分组顺序一致。

具体SQL实现(以支持窗口函数的数据库为例,如SQL Server、PostgreSQL)

方法一:分步CTE实现(可读性强)

WITH RankedRecords AS (
    -- 按当日排序规则给每条化验记录分配行号
    SELECT 
        *,
        ROW_NUMBER() OVER (
            PARTITION BY TestDate 
            ORDER BY Patient_OrdNumber_ByNumberOfRequiredAnalysis
        ) AS RowNum
    FROM Analysis
),
GroupStartPositions AS (
    -- 找到每个ReceptionId分组在当日的起始行号
    SELECT 
        ReceptionId,
        TestDate,
        MIN(RowNum) AS GroupStartRow
    FROM RankedRecords
    GROUP BY ReceptionId, TestDate
),
GroupSequences AS (
    -- 基于起始行号生成连续的组序号
    SELECT 
        ReceptionId,
        TestDate,
        DENSE_RANK() OVER (
            PARTITION BY TestDate 
            ORDER BY GroupStartRow
        ) AS GroupSeq
    FROM GroupStartPositions
)
-- 关联回原表,得到每条记录对应的组序号
SELECT 
    a.*,
    gs.GroupSeq
FROM Analysis a
JOIN GroupSequences gs 
    ON a.ReceptionId = gs.ReceptionId 
    AND a.TestDate = gs.TestDate
ORDER BY a.TestDate, a.Patient_OrdNumber_ByNumberOfRequiredAnalysis;

方法二:嵌套窗口函数(更简洁)

SELECT 
    *,
    -- 基于分组起始行号生成连续组序号
    DENSE_RANK() OVER (
        PARTITION BY TestDate 
        ORDER BY GroupStartRow
    ) AS GroupSeq
FROM (
    SELECT 
        *,
        -- 计算当前ReceptionId分组在当日的起始行号
        MIN(ROW_NUMBER() OVER (
            PARTITION BY TestDate 
            ORDER BY Patient_OrdNumber_ByNumberOfRequiredAnalysis
        )) OVER (
            PARTITION BY ReceptionId, TestDate
        ) AS GroupStartRow
    FROM Analysis
) AS T
ORDER BY TestDate, Patient_OrdNumber_ByNumberOfRequiredAnalysis;

效果说明

  • 同一ReceptionId的所有化验记录会得到相同的GroupSeq值
  • GroupSeq会按照Patient_OrdNumber_ByNumberOfRequiredAnalysis的排序顺序连续递增(1,2,3...),完美适配报表的奇偶组着色需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 03:02:24