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

如何在factTable中添加RegionID并关联dimRegion(无需创建子表)

解决方案

1. 自动生成维度表dimRegion

无需手动创建子表,直接从factTable提取唯一区域值,自动生成带主键RegionID的维度表:

-- 创建dimRegion表,RegionID设为自增主键
CREATE TABLE dimRegion (
    RegionID INT IDENTITY(1,1) PRIMARY KEY,
    Region VARCHAR(100) UNIQUE NOT NULL
);

-- 从factTable导入唯一的Region值
INSERT INTO dimRegion (Region)
SELECT DISTINCT Region FROM factTable;

2. 为factTable添加并更新RegionID字段

不用写全列的SELECT语句,直接通过关联更新完成字段填充:

-- 先给factTable新增RegionID字段
ALTER TABLE factTable ADD RegionID INT;

-- 关联dimRegion更新对应RegionID值
UPDATE f
SET f.RegionID = d.RegionID
FROM factTable f
JOIN dimRegion d ON f.Region = d.Region;

3. 建立外键约束(可选)

如果需要正式建立两张表的关联关系,添加外键约束:

ALTER TABLE factTable
ADD CONSTRAINT FK_factTable_RegionID FOREIGN KEY (RegionID) REFERENCES dimRegion(RegionID);

临时生成RegionID(仅查询场景)

如果只是查询时需要RegionID,无需永久修改表结构,可直接用窗口函数生成:

SELECT *,
       DENSE_RANK() OVER(ORDER BY Region) AS RegionID
FROM factTable;

DENSE_RANK()会为相同Region分配同一ID,更符合维度表主键的唯一性逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:03:13