根据列而不是整行

时间:2018-05-26 20:18:25

标签: sql-server

我希望我的代码能够以学生表的形式收集成绩表,并以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

样本从之前 - &gt;学生:

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

样本从之前 - &gt;等级:

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        

SAMPLE 从组合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    

0 个答案:

没有答案