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

能否在同一SQL查询中执行CASE查询并将结果存入表中?

问题解答

问题1:能否将CASE查询的结果保存到表中?

可以,有两种常用实现方式:创建新表存储结果,或更新现有表字段保存计算值。

方式1:创建新表存储结果(SELECT INTO)

基于你的示例代码,查询同时将结果(含CASE计算列)存入新表:

DECLARE @DateVal_1 DATE = '2022-07-01';

SELECT *,
CASE
    WHEN FORMAT(@DateVal_1,'dddd') = 'Montag' THEN Mo_AnzahlMitarbeiter
    WHEN FORMAT(@DateVal_1,'dddd') = 'Dienstag' THEN Di_AnzahlMitarbeiter
    WHEN FORMAT(@DateVal_1,'dddd') = 'Mittwoch' THEN Mi_AnzahlMitarbeiter
    WHEN FORMAT(@DateVal_1,'dddd') = 'Donnerstag' THEN Do_AnzahlMitarbeiter
    WHEN FORMAT(@DateVal_1,'dddd') = 'Freitag' THEN Fr_AnzahlMitarbeiter
    WHEN FORMAT(@DateVal_1,'dddd') = 'Samstag' THEN Sa_AnzahlMitarbeiter
    WHEN FORMAT(@DateVal_1,'dddd') = 'Sonntag' THEN So_AnzahlMitarbeiter
END AS Tag1_Anzahl_Ist
INTO NewTable1 -- 自动创建新表并插入数据
FROM Table1;

方式2:更新现有表字段保存结果

若Table1已存在Tag1_Anzahl_Ist字段,直接用UPDATE结合CASE更新:

DECLARE @DateVal_1 DATE = '2022-07-01';

UPDATE Table1
SET Tag1_Anzahl_Ist = 
CASE
    WHEN FORMAT(@DateVal_1,'dddd') = 'Montag' THEN Mo_AnzahlMitarbeiter
    WHEN FORMAT(@DateVal_1,'dddd') = 'Dienstag' THEN Di_AnzahlMitarbeiter
    WHEN FORMAT(@DateVal_1,'dddd') = 'Mittwoch' THEN Mi_AnzahlMitarbeiter
    WHEN FORMAT(@DateVal_1,'dddd') = 'Donnerstag' THEN Do_AnzahlMitarbeiter
    WHEN FORMAT(@DateVal_1,'dddd') = 'Freitag' THEN Fr_AnzahlMitarbeiter
    WHEN FORMAT(@DateVal_1,'dddd') = 'Samstag' THEN Sa_AnzahlMitarbeiter
    WHEN FORMAT(@DateVal_1,'dddd') = 'Sonntag' THEN So_AnzahlMitarbeiter
END;

问题2:是否可以执行CASE查询并在同一查询中将结果保存到表中?

当然可以,上述两种方式都能在同一查询内完成CASE计算和结果保存:

  • SELECT INTO会在执行查询的同时,将结果写入新表;
  • UPDATE语句会在计算CASE值的同时,直接更新现有表的对应字段。

如果需要先通过CTE(公共表表达式)封装计算逻辑,再保存结果,也可以用以下写法:

DECLARE @DateVal_1 DATE = '2022-07-01';

WITH CalculatedData AS (
    SELECT *,
    CASE
        WHEN FORMAT(@DateVal_1,'dddd') = 'Montag' THEN Mo_AnzahlMitarbeiter
        WHEN FORMAT(@DateVal_1,'dddd') = 'Dienstag' THEN Di_AnzahlMitarbeiter
        WHEN FORMAT(@DateVal_1,'dddd') = 'Mittwoch' THEN Mi_AnzahlMitarbeiter
        WHEN FORMAT(@DateVal_1,'dddd') = 'Donnerstag' THEN Do_AnzahlMitarbeiter
        WHEN FORMAT(@DateVal_1,'dddd') = 'Freitag' THEN Fr_AnzahlMitarbeiter
        WHEN FORMAT(@DateVal_1,'dddd') = 'Samstag' THEN Sa_AnzahlMitarbeiter
        WHEN FORMAT(@DateVal_1,'dddd') = 'Sonntag' THEN So_AnzahlMitarbeiter
    END AS Tag1_Anzahl_Ist
    FROM Table1
)
-- 选择1:将计算结果存入新表
SELECT * INTO NewTable2 FROM CalculatedData;

-- 选择2:更新原表(假设原表有主键ID)
-- UPDATE t
-- SET t.Tag1_Anzahl_Ist = c.Tag1_Anzahl_Ist
-- FROM Table1 t
-- JOIN CalculatedData c ON t.ID = c.ID;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 09:45:36