首页 > 解决方案 > 根据列而不是整行删除重复项

问题描述

我希望我的代码以共同因素收集成绩表和学生表STUDENT_ID。使用该DISTINCT子句,它会删除重复的行,但我希望它不会PERSON_ID多次显示相同的内容,因此它只会显示STUDENT_ID一次。

这是一个巨大的数据文件。

SELECT DISTINCT 
    grades.PERSON_ID, grades.GRADE, 
    students.PERSON_ID, students.ENROLL_PERIOD 
FROM  
    students 
INNER JOIN 
    grades ON students.PERSON_ID = grades.PERSON_ID 
WHERE 
    ENROLL_PERIOD < 132 
ORDER BY 
    students.ENROLL_PERIOD

以前的样本-> 学生:

PERSON_ID   PROGRAM_ID  ENROLL_PERIOD
12401       82          109
12401       4549        112
720921      5921        112
832521      9981        114

以前的样本-> 等级:

PERSON_ID   GRADE   GRADE_DATE  GRADE_TYPE
2308133     7       16-06-26    p                
2308133     10      18-01-24    p                
2308133     4       16-02-01    p        

将 2 个表合并时的示例,如下所示:

PERSON_ID   GRADE   PERSON_ID   ENROLL_PERIOD
12401       00      12401       109
12401       02      12401       112
720921      00      720921      112
832521      00      832521      114

在这里我们看到,“12401”行存在两次,因为只有当整行不同时才应该跳过第二个“12401”并跳转到下一个(例如12491)

PERSON_ID   GRADE   PERSON_ID   ENROLL_PERIOD
12401       00      12401       109
720921      00      720921      112
832521      00      832521      114    

标签: sql-server

解决方案


推荐阅读