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

SQL Server:如何用CASE实现分条件的INSERT INTO语句?

T-SQL 按分类条件插入不同列的解决方案

嘿,我懂你卡在哪了——想用CASE语句根据Table_A的Category字段,把数据分别塞进Table_B的列1或列2,没成功对吧?其实问题大概率出在CASE的用法上,咱们直接上能跑的代码,再给你掰扯清楚:

假设你的Table_A有Category(分类字段)和DataValue(要插入的实际数据),Table_B有Column1和Column2(对应不同分类的存储列),那正确的INSERT语句应该是这样的:

INSERT INTO Table_B (Column1, Column2)
SELECT
    -- 当Category符合指定条件时,把DataValue放到Column1,否则留NULL
    CASE WHEN Category = '目标分类1' THEN DataValue ELSE NULL END AS Column1,
    -- 不符合上面的条件时,把DataValue放到Column2,否则留NULL
    CASE WHEN Category != '目标分类1' THEN DataValue ELSE NULL END AS Column2
FROM Table_A;

要是你的分类条件不止一个,比如多个分类对应Column1,直接用IN扩展条件就行:

INSERT INTO Table_B (Column1, Column2)
SELECT
    CASE WHEN Category IN ('分类A', '分类B', '分类C') THEN DataValue ELSE NULL END AS Column1,
    CASE WHEN Category NOT IN ('分类A', '分类B', '分类C') THEN DataValue ELSE NULL END AS Column2
FROM Table_A;

核心逻辑就是给每个目标列单独写CASE判断:每个CASE只负责当前列的取值,符合条件就填数据,不符合就放NULL。这样就能实现逐行判断,把数据精准插入到对应的列里,另一列自然保持NULL啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:13:30