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

SQL Server如何依据TFC表记录复制Request表行并补全Sketch_rev字段

实现查询

你可以直接使用以下SQL Server查询得到完全匹配需求的结果:

WITH DistinctTFC AS (
    -- 先对TFC表去重,过滤重复的草图版本记录
    SELECT DISTINCT 
        Request_no,
        Request_ver_no,
        [Sketch_no+rev]
    FROM TFC
)
SELECT 
    r.Request_no,
    r.Request_ver_no,
    r.Sketch_no,
    -- 提取末尾版本号:去掉前缀Sketch_no,剩余字符就是版本字母
    Sketch_rev = REPLACE(t.[Sketch_no+rev], r.Sketch_no, ''),
    -- 按请求主键分组生成递增Index,按草图版本排序保证顺序正确
    [Index] = ROW_NUMBER() OVER (
        PARTITION BY r.Request_no, r.Request_ver_no 
        ORDER BY t.[Sketch_no+rev]
    )
FROM Request r
INNER JOIN DistinctTFC t
    ON r.Request_no = t.Request_no 
    AND r.Request_ver_no = t.Request_ver_no
ORDER BY r.Request_no, r.Request_ver_no, [Index]

逻辑说明

  • 用CTE DistinctTFC 提前对TFC表去重,避免因TFC_no重复生成多余的Request行
  • 通过Request_no + Request_ver_no 关联两张表,匹配同一个请求版本对应的所有草图版本
  • 用REPLACE去掉Sketch_no+rev的前缀部分,无后缀的原始版本会自动返回空值,刚好匹配需求
  • 窗口函数ROW_NUMBER按请求主键分区、按草图版本排序生成的Index,完全符合你要求的编号规则
  • 如果你数据里存在Sketch_no内容出现在Sketch_no+rev后半段的特殊情况,可以把Sketch_rev的提取逻辑替换为更严谨的STUFF(t.[Sketch_no+rev], 1, LEN(r.Sketch_no), ''),效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:48:03