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

能否编写SQL查询返回指定结果集?附测试样例数据

SQL查询方案:对比三个时期的产品信息

没问题,我来帮你编写这条SQL查询语句。根据你提供的三个表(当前、往期、未来产品),我们需要先收集所有出现过的产品名称,然后分别关联三个表获取对应的类别信息,不存在的就标记为'NA'。

最终SQL查询语句

WITH AllProductNames AS (
    -- 获取所有唯一的产品名称(自动去重)
    SELECT Productname FROM CurrentProduct
    UNION
    SELECT Productname FROM PreviousProduct
    UNION
    SELECT Productname FROM FutureProduct
)
SELECT
    apn.Productname,
    -- 若当前表存在该产品,拼接对应类别;无匹配则显示'NA'
    ISNULL((SELECT STRING_AGG(CategoryName, ', ') FROM CurrentProduct cp WHERE cp.Productname = apn.Productname), 'NA') AS Current_Category,
    -- 处理往期产品表的类别信息
    ISNULL((SELECT STRING_AGG(CategoryName, ', ') FROM PreviousProduct pp WHERE pp.Productname = apn.Productname), 'NA') AS Previous_Category,
    -- 处理未来产品表的类别信息
    ISNULL((SELECT STRING_AGG(CategoryName, ', ') FROM FutureProduct fp WHERE fp.Productname = apn.Productname), 'NA') AS Future_Category
FROM AllProductNames apn
ORDER BY apn.Productname;

语句说明

  1. CTE AllProductNames:通过UNION合并三个表的产品名称并自动去重,确保我们能覆盖所有出现过的产品,不会遗漏任何条目。
  2. 子查询+STRING_AGG:如果一个产品属于多个类别(你的样例里没有这种情况,但语句兼容该场景),会用逗号拼接所有关联类别;如果该产品在对应表中完全不存在,ISNULL会把返回的NULL替换成要求的'NA'。
  3. 排序:最后按产品名称排序,让结果更整洁易读。

执行结果(基于你的样例数据)

ProductnameCurrent_CategoryPrevious_CategoryFuture_Category
Prod1Cat1Cat1Cat1
Prod2Cat1Cat1Cat1
Prod3Cat2Cat4Cat4
Prod4Cat5Cat5Cat5
Prod5Cat5NANA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 22:17:37