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

SQL Server不同列名表间数据复制及默认值赋值方法问询

解决方案

直接使用INSERT @TempTable0 EXEC...会因为列名不匹配、目标表多两个非空列而执行失败,需要先捕获存储过程的输出,再完成列映射与默认值填充,具体步骤如下:

  1. 声明中间表存储存储过程结果
    创建一个与存储过程返回结构(即Table 1的结构)一致的中间表变量,用来接收存储过程输出的数据:
DECLARE @TempTable1 TABLE (
    ID INT, -- 请根据实际数据类型调整
    Wager DECIMAL(18,2), -- 请根据实际数据类型调整
    TransactionType INT -- 请根据实际数据类型调整
)
  1. 将存储过程结果插入中间表
INSERT INTO @TempTable1
EXEC [server].[DB].[dbo].[stored_proc] 
    @ClientID = @ClientID,
    @StartDate = @StartDate,
    @EndDate = @EndDate;
  1. 映射列并插入目标临时表
    从中间表读取数据,将Wager映射到Stake、TransactionType映射到TransactionTypeID,同时为Markets和Odds指定符合类型要求的默认值:
-- 若@TempTable0未声明,先定义其结构
DECLARE @TempTable0 TABLE (
    ID INT,
    Stake DECIMAL(18,2),
    TransactionTypeID INT,
    Markets VARCHAR(100) NOT NULL, -- 请根据实际数据类型调整
    Odds DECIMAL(10,2) NOT NULL -- 请根据实际数据类型调整
)

INSERT INTO @TempTable0 (ID, Stake, TransactionTypeID, Markets, Odds)
SELECT 
    ID,
    Wager AS Stake,
    TransactionType AS TransactionTypeID,
    '默认市场' AS Markets, -- 替换为你的实际默认值
    1.99 AS Odds -- 替换为你的实际默认值
FROM @TempTable1;

注意事项

  • 确保中间表的列数据类型与存储过程返回的列类型完全匹配,避免类型转换错误
  • Markets和Odds的默认值需对应列的数据类型,比如数值类型不能用字符串值,反之亦然
  • 如果存储过程返回的列名与中间表列名一致,无需额外处理列映射,直接插入即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:52:23