如何筛选两列均无重复值的行(非仅唯一行)
订单与发票表筛选方案:保留ORD/INV均无重复的行
核心逻辑
要筛选的行必须同时满足两个条件:
- 当前行的
ORD值在全表中仅出现1次 - 当前行的
INV值在全表中仅出现1次
SQL实现方案
假设你的关联表名为order_invoice,可以用窗口函数统计每个值的出现次数,再筛选符合条件的行:
WITH count_cte AS ( SELECT ORD, INV, COUNT(ORD) OVER (PARTITION BY ORD) AS ord_count, COUNT(INV) OVER (PARTITION BY INV) AS inv_count FROM order_invoice ) SELECT ORD, INV FROM count_cte WHERE ord_count = 1 AND inv_count = 1;
这段代码先通过CTE给每一行计算对应ORD和INV的全局出现次数,之后只保留两个计数都为1的行,完全符合“任意列存在重复就排除”的要求。
Excel实现方案
如果用Excel处理数据:
- 假设
ORD在A列,新增辅助列(如C列),输入公式:=COUNTIF($A:$A,A2),下拉填充得到每个ORD的重复次数 - 假设
INV在B列,新增辅助列(如D列),输入公式:=COUNTIF($B:$B,B2),下拉填充得到每个INV的重复次数 - 筛选C列和D列值均为1的行,即为符合要求的结果
内容的提问来源于stack exchange,提问作者emsfurmogin
相关产品推荐
相关产品推荐

