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

如何将查询生成的格式化表结构同步至原AdjustedProductionByMonth表

如何将原表调整为查询结果的结构

由于原表是行式存储(每条记录对应一个Type的Dollars值),而目标是转成列式汇总结构,直接修改原表结构无法实现,需要通过重新生成表的方式完成,以下是两种可行方案:

方案一:备份后替换原表

  1. 先备份原表数据(务必执行,防止数据丢失):
SELECT * INTO [Portfolio Project].dbo.AdjustedProductionByMonth_Backup 
FROM [Portfolio Project].dbo.AdjustedProductionByMonth;
  1. 删除原表:
DROP TABLE [Portfolio Project].dbo.AdjustedProductionByMonth;
  1. 用目标查询生成新表:
SELECT 
    MonthStandard
    , SUM(CASE WHEN Type = 'Gross Production' THEN Dollars END) AS GrossProduction
    , SUM(CASE WHEN Type = 'Adjustments' THEN Dollars END) AS Adjustments
    , SUM(CASE WHEN Type = 'Write-Offs' THEN Dollars END) AS WriteOffs
    , SUM(CASE WHEN Type = 'Adjusted Production' THEN Dollars END) AS AdjustedProduction
INTO [Portfolio Project].dbo.AdjustedProductionByMonth
FROM [Portfolio Project].dbo.AdjustedProductionByMonth_Backup
GROUP BY MonthStandard;

方案二:重命名原表后创建新表

如果不想删除原表,可先将其重命名为历史表,再创建新表:

  1. 重命名原表:
EXEC sp_rename '[Portfolio Project].dbo.AdjustedProductionByMonth', 'AdjustedProductionByMonth_Old';
  1. 生成目标结构的新表:
SELECT 
    MonthStandard
    , SUM(CASE WHEN Type = 'Gross Production' THEN Dollars END) AS GrossProduction
    , SUM(CASE WHEN Type = 'Adjustments' THEN Dollars END) AS Adjustments
    , SUM(CASE WHEN Type = 'Write-Offs' THEN Dollars END) AS WriteOffs
    , SUM(CASE WHEN Type = 'Adjusted Production' THEN Dollars END) AS AdjustedProduction
INTO [Portfolio Project].dbo.AdjustedProductionByMonth
FROM [Portfolio Project].dbo.AdjustedProductionByMonth_Old
GROUP BY MonthStandard;

注意事项

  • 原表的索引、约束、触发器等不会自动迁移到新表,若有需要需手动重新创建。
  • 后续插入数据时,需调整插入逻辑,适配新的宽表结构(不再插入Type和Dollars,而是直接填充各汇总列)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 08:24:53