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

如何不硬编码,从Contract表更新Transaction表的Posting_ID?

解决方案

要实现根据Contract表更新Transaction表的Posting_ID,核心是处理Contract表中逗号分隔的Contract_NM关联逻辑,以下是具体实现:

实现代码

UPDATE t
SET t.Posting_ID = c.Posting_ID
FROM #Transaction t
INNER JOIN #Contract c 
    ON t.Client_NM = c.Client_NM
    -- 用逗号包裹字符串避免部分匹配,确保精确匹配单个Contract_NM
    AND CHARINDEX(',' + t.Contract_NM + ',', ',' + c.Contract_NM + ',') > 0

逻辑说明

  1. 客户匹配:通过Client_NM关联两张表,确保只更新同一客户的记录
  2. Contract_NM匹配:
    • 给Transaction表的Contract_NM前后添加逗号(如LC01变为,LC01,)
    • 给Contract表的逗号分隔Contract_NM前后添加逗号(如LC01,LC02变为,LC01,LC02,)
    • 使用CHARINDEX函数判断单个Contract_NM是否属于对应的分组,避免出现LC01误匹配LC011这类部分匹配问题
  3. 批量更新:通过UPDATE ... FROM语法批量将Transaction表的Posting_ID替换为Contract表中对应分组的Posting_ID

验证结果

执行更新后,查询Transaction表即可看到更新后的结果:

SELECT * FROM #Transaction

预期输出:

IDPosting_IDContract_NMClient_NM
194265LC01ACA
294265LC02ACA
312422LC03ACA
494260LC04ACA
594260LC05ACA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:43:11