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

基于数据子集关联记录的双规则SQL计算需求

实现基于Account-Customer关联的OUTPUT标记逻辑(SQL)

需求概述

  • 规则1:若某个Account下存在至少一个Customer的KEY='N',则该Account下所有Customer的OUTPUT设为'NOT OK'
  • 规则2:在规则1基础上,只要某个Customer因规则1被标记为'NOT OK',那么这个Customer所有其他Account的关联记录,OUTPUT也必须是'NOT OK'
  • 特殊情况:客户4的OUTPUT始终为'OK'——因为他从未出现在任何包含KEY='N'的Account中

SQL实现(兼容主流数据库)

以下方案适用于PostgreSQL、MySQL 8.0+、SQL Server等支持CTE的数据库:

WITH flagged_accounts AS (
    -- 第一步:筛选出所有存在KEY='N'的Account
    SELECT Account
    FROM your_table
    WHERE KEY = 'N'
    GROUP BY Account
),
risk_customers AS (
    -- 第二步:找出所有关联过问题Account的Customer
    SELECT DISTINCT Customer
    FROM your_table
    JOIN flagged_accounts USING(Account)
)
-- 第三步:生成最终OUTPUT字段
SELECT
    Account,
    Customer,
    KEY,
    CASE 
        WHEN r.Customer IS NOT NULL THEN 'NOT OK'
        ELSE 'OK'
    END AS OUTPUT
FROM your_table t
LEFT JOIN risk_customers r ON t.Customer = r.Customer;

逻辑拆解

  1. flagged_accounts:先定位所有触发规则1的Account,即包含KEY='N'的账户
  2. risk_customers:通过关联原表,找出所有在问题Account中出现过的Customer——这些客户就是需要全局标记的对象(对应规则2)
  3. 最终查询:通过左关联判断每条记录的Customer是否属于风险客户,是则输出'NOT OK',否则输出'OK'

该写法直接覆盖两个规则,同时自然满足客户4的例外情况:完全未关联过任何问题Account的客户,会被标记为'OK'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:53:31