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

SQL Server如何合并两个无关联表并生成自定义Key列?

实现方案

要实现每个StoreName和StoreStageTable的所有行组合生成新Key,核心是做笛卡尔积连接,再通过字符串拼接生成目标Key列,具体实现如下:

假设两张表的结构:

  • StoreTable:包含列StoreName(存储Store1、Store2这类值)
  • StoreStageTable:包含列StageName(存储Pre、WorkInProgress、Completed这类值)

通用实现(以MySQL为例)

CREATE VIEW StoreCombinedView AS
SELECT
  CONCAT(st.StoreName, '_', sst.StageName) AS StoreKey,
  st.StoreName,
  sst.StageName
FROM StoreTable st
CROSS JOIN StoreStageTable sst;

不同数据库的字符串拼接差异

  • SQL Server:使用CONCAT函数或+运算符拼接(注意处理NULL值)
    CREATE VIEW StoreCombinedView AS
    SELECT
      CONCAT(st.StoreName, '_', sst.StageName) AS StoreKey,
      st.StoreName,
      sst.StageName
    FROM StoreTable st
    CROSS JOIN StoreStageTable sst;
    
  • Oracle:使用||运算符拼接
    CREATE VIEW StoreCombinedView AS
    SELECT
      st.StoreName || '_' || sst.StageName AS StoreKey,
      st.StoreName,
      sst.StageName
    FROM StoreTable st
    CROSS JOIN StoreStageTable sst;
    

关键说明

  • CROSS JOIN会返回两个表的所有行组合,刚好满足每个StoreName和每个StageName配对的需求
  • 生成的StoreKey就是你需要的Store1_Pre、Store1_WorkInProgress这类格式
  • 视图创建完成后,直接查询StoreCombinedView就能获取所有组合结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:50:22