0

表:MAST_CAT_HS

EMPLID | CONV_GRADE_OFF | MAST_CAT


1 90 化学

1 90 PHSC

1 75 数学

1 95 数学

1 50 英语

1 90 数学

1 90 化学

1 90 PHSC

1 65 总线

2 90 英语

2 80 数学

想要得到这样的结果:

EMPLID | CONV_GRADE_OFF | MAST_CAT


1 90 化学

1 90 PHSC

1 95 数学

1 50 英语

1 65 总线

2 90 英语

2 80 数学

不幸的是,我们不能对 MAST_CAT 列做出任何假设 =( 这是我的查询。它不会将具有相同课程和相同分数的多行合并为单行。我的方法是:

SELECT sr1.EMPLID, sr1.CONV_GRADE_OFF, sr1.MAST_CAT
FROM MAST_CAT_HS sr1
LEFT JOIN MAST_CAT_HS sr2
  ON sr1.EMPLID = sr2.EMPLID 
 AND sr1.MAST_CAT = sr2.MAST_CAT
 AND sr1.CONV_GRADE_OFF < sr2.CONV_GRADE_OFF
WHERE sr2.EMPLID IS NULL
4

1 回答 1

2
SELECT emplid, MAX(conv_grade_off), MAST_CAT
FROM MAST_CAT_HS
GROUP by elplid, mast_cat

按 ip 和 mast_cat 分组并选择分组行的最大分数

于 2013-07-11T21:24:47.243 回答