如何创建NetSuite已保存搜索筛选未关联XYZ子公司的客户
获取未关联特定子公司(XYZ)的客户列表解决方案
问题根源
你之前的筛选逻辑针对的是单条子公司关联记录,而每个客户有多条子公司关联记录——只要存在一条非XYZ的记录,该客户就会被选中,自然无法得到正确结果。必须从客户维度判断是否完全没有关联过XYZ子公司。
解决方案
以下提供两种通用实现方式,可根据你的数据库或报表工具调整:
方法1:聚合函数分组统计
通过分组统计每个客户关联XYZ子公司的次数,筛选次数为0的客户:
SELECT c.customer_id, c.customer_name FROM customers c LEFT JOIN customer_subsidiaries cs ON c.customer_id = cs.customer_id GROUP BY c.customer_id, c.customer_name HAVING SUM(CASE WHEN cs.namenohierarchy = 'XYZ' THEN 1 ELSE 0 END) = 0;
- 用
LEFT JOIN确保所有客户都被纳入统计 SUM(CASE...)统计每个客户关联XYZ的次数HAVING子句筛选次数为0的客户,即完全未关联XYZ的客户
方法2:子查询排除已关联客户
先找出所有关联过XYZ的客户ID,再从客户表中排除这些ID:
SELECT customer_id, customer_name FROM customers WHERE customer_id NOT IN ( SELECT DISTINCT customer_id FROM customer_subsidiaries WHERE namenohierarchy = 'XYZ' );
- 子查询获取所有关联过XYZ的客户ID
NOT IN排除这些客户,剩余即为目标客户
报表工具适配(如Crystal Reports等)
如果是在BI报表工具中操作,按客户分组后添加组级汇总公式:
Sum(If {msesubsidiary.namenohierarchy} = 'XYZ' Then 1 Else 0)
然后设置组筛选条件为该汇总公式等于0即可。
内容的提问来源于stack exchange,提问作者Bud
相关产品推荐
相关产品推荐

