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

创建通过复制补全缺失FK条目的SQL视图技术需求

解决方案:创建SQL视图补全缺失的NR-FK条目

这个需求我之前碰见过类似的,核心思路是先构建出所有应该存在的NR与FK的组合,再关联原表补全对应的Description。毕竟题目里明确说了每个NR至少有一行FK=0的记录,这刚好能帮我们拿到每个NR对应的默认描述。

具体SQL代码

CREATE VIEW complete_nr_fk_view AS
-- 第一步:获取所有存在的FK值(要补全的目标FK集合)
WITH all_fks AS (
    SELECT DISTINCT FK FROM your_original_table
),
-- 第二步:获取每个NR对应的默认描述(利用每个NR都有FK=0的记录)
nr_default_descriptions AS (
    SELECT NR, Description 
    FROM your_original_table 
    WHERE FK = 0
)
-- 第三步:生成所有NR-FK组合,左连原表补全数据
SELECT 
    nd.NR,
    -- 如果原表有对应条目就用原描述,没有就用NR的默认描述
    COALESCE(t.Description, nd.Description) AS Description,
    af.FK
FROM nr_default_descriptions nd
-- 笛卡尔积得到所有可能的NR-FK组合
CROSS JOIN all_fks af
-- 左连接原表匹配已有数据
LEFT JOIN your_original_table t 
    ON nd.NR = t.NR AND af.FK = t.FK
-- 按NR和FK排序,和示例输出一致
ORDER BY nd.NR, af.FK;

代码解释

  1. all_fks CTE:提取原表中所有不重复的FK值,比如你的示例里就是0,1,2,这是我们要为每个NR补全的FK范围。
  2. nr_default_descriptions CTE:因为每个NR都有FK=0的记录,所以直接取这些行的NR和Description,就能得到每个NR对应的默认描述(比如示例里NR=1对应的就是Text3)。
  3. 笛卡尔积+左连接:把每个NR和所有FK值做组合,再左连接原表。如果原表已经有该NR-FK的条目,就用原表的Description;如果没有(也就是缺失的条目),就用NR的默认Description补全,完美实现你要的效果。

验证示例结果

用你给出的原表数据运行这个视图,就能得到:

NRDescriptionFK
0Text10
0Text21
0Text42
1Text30
1Text31
1Text32

完全符合你的期望输出~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:03:58