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

基于关联SELECT结果的CASE语句实现INSERT操作的SQL问题咨询

可行解决方案

你需要先预计算每个Spell_ID对应的最大Episode_Order(即M值),再通过Spell_ID关联目标表执行更新操作,不要使用INSERT(INSERT会新增行,你的需求是更新已有行的字段),正确代码如下:

-- 先清空现有Episode_Ward值
UPDATE Inpatient_Episodes_Landing SET Episode_Ward = NULL;

-- 用CTE预计算每个Spell_ID对应的M值(最大Episode_Order)
WITH Spell_Max_Episode AS (
    SELECT Spell_ID, MAX(Episode_Order) as M
    FROM [dbo].[Client_MidEssex_Inpatient_Episodes_Landing]
    GROUP BY Spell_ID
    -- 如果需要限制只处理前1000个Spell_ID,取消下一行注释
    -- ORDER BY Spell_ID OFFSET 0 ROWS FETCH FIRST 1000 ROWS ONLY
)
-- 关联更新目标表
UPDATE t
SET t.Episode_Ward = CASE 
    WHEN t.Episode_Order = 1 THEN t.Admission_Ward_Code
    WHEN t.Episode_Order = m.M THEN t.Discharge_Ward_Code
    ELSE t.Admission_Ward_Code
END
FROM [dbo].[Inpatient_Episodes_Landing] t
INNER JOIN Spell_Max_Episode m ON t.SpellID = m.Spell_ID;

-- 查看更新结果
SELECT TOP (1000) SpellID, Episode_Number, Episode_Ward 
FROM Inpatient_Episodes_Landing;

注意事项

  • 如果你的Episode_Order字段是字符串存储(比如存为'01'而不是数值1),请把判断条件改为WHEN t.Episode_Order = '01'
  • 关联条件的字段名请和你的实际表结构对应,如果源表的Spell_ID和目标表的SpellID命名有差异请自行调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:36:00