You need to enable JavaScript to run this app. 如何在SAS SQL中筛选Name、ID相同但Code列取值不同的记录
优惠活动
大模型
产品
解决方案
定价
更多

如何在SAS SQL中筛选Name、ID相同但Code列取值不同的记录

核心实现思路

先按Name和ID两个字段分组,统计每个分组下不同Code的数量,只要分组内Code去重后数量大于1,就把该分组下的所有记录全部取出即可。

各场景实现代码

1. SQL 实现(支持绝大多数数据库)

写法1:窗口函数(性能更优)
SELECT Name, ID, Code
FROM (
    SELECT 
        *,
        COUNT(DISTINCT Code) OVER (PARTITION BY Name, ID) AS distinct_code_count
    FROM 你的表名
) t
WHERE distinct_code_count > 1;
写法2:子查询匹配(兼容旧版本SQL)
SELECT Name, ID, Code
FROM 你的表名
WHERE (Name, ID) IN (
    SELECT Name, ID
    FROM 你的表名
    GROUP BY Name, ID
    HAVING COUNT(DISTINCT Code) > 1
);

2. Excel 实现

新增辅助列,输入如下公式(假设Name在A列、ID在B列、Code在C列,数据从第2行开始),筛选辅助列结果大于0的行即可:

=COUNTIFS(A:A,A2,B:B,B2,C:C,"<>"&C2)

3. Python Pandas 实现

import pandas as pd

# 替换为你的数据表
df = pd.read_excel("你的数据文件路径.xlsx")

# 筛选逻辑
result = df[df.groupby(['Name', 'ID'])['Code'].transform('nunique') > 1]
print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 04:54:04