现在已经磕磕绊绊几个小时了。我在这里看过其他几篇文章但是找不到符合我需求的文章。有一个Access数据库,我试图删除可能的重复项,并获得唯一列表的最大值。我有一些需要数据的字段:
CustomerNumber EmpID SurveyResultID SurveyTotalScore SurveyQuestionCount
CustomerNumber有重复,但我只需要不同的值。如果有一个具有不同SurveyTotalScore的重复CustomerNumber,我需要MAX分数。
基本上我想返回一个具有最高SurveyTotalScore并且没有重复项的不同CustomerNumber的列表。什么是最好的方式?
更新的 这是我尝试过的一个查询。它可以工作,如果我只是离开CustomerNumber但我需要EmpID和其他一些领域。
SELECT CustomerNumber, Max(SurveyTotalScore) AS MaxScore, SurveyResultID
FROM CSATDetail
GROUP BY CustomerNumber, SurveyResultID;
示例数据:
+----------------+----------+----------------+-------+
| CustomerNumber | MaxScore | SurveyResultID | EmpID |
+----------------+----------+----------------+-------+
| 259 | 40 | 461500 | 83 |
| 259 | 38 | 461501 | 83 |
| 695 | 40 | 461502 | 59 |
| 695 | 40 | 461504 | 59 |
| 734 | 40 | 461503 | 96 |
+----------------+----------+----------------+-------+
我想出来的是这个。如果EmpID
有多个结果,它会选择maxscore并且没有重复项+----------------+----------+----------------+-------+
| CustomerNumber | MaxScore | SurveyResultID | EmpID |
+----------------+----------+----------------+-------+
| 259 | 40 | 461500 | 83 |
| 695 | 40 | 461502 | 59 |
| 734 | 40 | 461503 | 96 |
+----------------+----------+----------------+-------+
答案 0 :(得分:0)
你离我只有一步之遥。
SELECT CD.CustomerNumber, MaxScore, min(SurveyResultID), EmpID
FROM CSATDETAIL CD
INNER JOIN (SELECT CustomerNumber, Max(SurveyTotalScore) AS MaxScore
FROM CSATDetail CI
GROUP BY CustomerNumber) CD2
on CD.CustomerNumber = CD2.customerNumber
and CD.SurveyTotalScore = CD2.MaxScore
GROUP BY CD.CustomerNumber, MaxScore, EmpID
并且因为它看起来你可以根据样本数据建立联系,你想要最小调查.....我们需要一个分组和分钟。
----在最后一次评论之后...现在基本上说了。
使用最早的surveyResultID返回具有最高分数的每个客户的employeeID。
SELECT CD.CustomerNumber, MaxScore, minSurveyResultID, EmpID
FROM CSATDETAIL CD
INNER JOIN (SELECT CD3.CustomerNumber, CD2.MaxScore, Min(SurveyResultID) AS MinSurveyResultID
FROM CSATDETAIL CD3
INNER JOIN (SELECT CustomerNumber, Max(SurveyTotalScore) AS MaxScore
FROM CSATDetail CI
GROUP BY CustomerNumber) CD2
ON CD2.CustomerNumber = Cd3.CustomerNumber
and CD2.MaxScore = CD3.SurveyTotalScore
GROUP BY CD3.CustomerNumber, CD2.MaxScore) CD4
on CD.CustomerNumber = CD4.customerNumber
and CD.SurveyTotalScore = CD4.MaxScore
and CD.SurveyResultID = CD4.MinSurveyResultID