【发布时间】:2013-07-10 08:04:27
【问题描述】:
表格: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
【问题讨论】:
-
如果您设置SQL Fiddle,我们会更容易为您提供帮助
-
如果您在
SELECT之后添加了DISTINCT关键字,或者您在WHERE子句之后添加了GROUP BY sr1.EMPLID, sr1.CONV_GRADE_OFF, sr1.MAST_CAT,您的查询将返回指定的结果集。