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

SQL需求:按Client_Name筛选记录,避免重复添加同一客户数据

需求分析与SQL解决方案

原表INPUTPF结构及数据

记录编号客户名称类别Fld1Fld2
1Abbey123Y
2Abbey999Y
3Abbey234Y
4Bill222N
5Bill333YN
6Bill444YN
7Mike987YN
8Mike000YN
9Mike999
10Tom666YN
11Tom777YN
12Tom999Y

原有SQL逻辑

原有SQL用于筛选Fld1存在差异的客户所有记录并写入OUTPUT1:

DROP TABLE IF EXISTS OUTPUT1;            

CREATE TABLE LIB1/OUTPUT1 AS(           
    SELECT *                                   
    FROM INPUTPF                            
    WHERE Client_Name IN (                            
        SELECT Client_Name                                
        FROM INPUTPF                            
        GROUP BY Client_Name                              
        HAVING COUNT(DISTINCT Fld1) > 1
    )
)        
WITH DATA;

该代码已将Bill(记录4-6)和Mike(记录7-9)的所有记录写入OUTPUT1。

新需求

需要补充SQL,实现:

  • 检测INPUTPF中Fld2存在差异的客户记录
  • 仅将未因Fld1差异被写入OUTPUT1的客户(如Tom)的所有记录添加至OUTPUT1
  • 已存在于OUTPUT1的客户(如Mike),即使Fld2有差异也不重复添加
  • 最终OUTPUT1需包含Bill、Mike、Tom的所有对应记录且无重复

解决方案SQL

使用INSERT INTO结合条件筛选即可实现需求,代码如下:

INSERT INTO LIB1/OUTPUT1
SELECT *
FROM INPUTPF
WHERE Client_Name IN (
    -- 筛选Fld2存在差异的客户
    SELECT Client_Name
    FROM INPUTPF
    GROUP BY Client_Name
    HAVING COUNT(DISTINCT Fld2) > 1
)
-- 排除已在OUTPUT1中的客户,避免重复插入
AND Client_Name NOT IN (
    SELECT DISTINCT Client_Name
    FROM LIB1/OUTPUT1
);

逻辑说明

  1. 第一个内层子查询:筛选出所有Fld2存在不同值(包含空值)的客户
  2. 第二个内层子查询:获取已经存在于OUTPUT1中的客户名单
  3. 主查询从INPUTPF中选取满足「Fld2有差异且未在OUTPUT1中」的客户所有记录,插入到OUTPUT1中

执行后,Tom的所有记录会被添加到OUTPUT1,而Bill、Mike的记录不会重复插入,最终OUTPUT1将包含所有目标客户的完整记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 19:15:09