2

我想创建一个从列中获取所有不同值的查询,如果有多个值,它应该选择最高的一个。

就像我有一个表架构一样:

员工姓名 | 任务 | 给定时间

并且员工可以有多个相同的条目Task,我想Tasks为所有员工获得最高TimeGiven的所有不同,我该怎么做?

编辑
数据集:

EmployeName Task        TimeGiven
Mr. X       R&D         30
Mr. X       R&D         50
Mr. X       Devlpmnt    31
Mr. X       Devlpmnt    60
Mr. Y       R&D         40
Mr. Y       R&D         10
Mr. Y       R&D         90
Mr. Y       Devlpmnt    10

**Result Needed:**
Mr. X       R&D         50
Mr. X       Devlpmnt    60
Mr. Y       R&D         90
Mr. Y       Devlpmnt    10

我需要的是每一个员工,TimeGiven每一个任务都做到最高!

4

1 回答 1

1

听起来你需要使用group by

select EmployeeName
  , Task
  , TimeGiven = max(TimeGiven)
from t1
group by EmployeeName
  , Task

评论后编辑:

你的意思是这样的:

select Task
  , TimeGiven = max(TimeGiven)
from t1
group by Task

我所做的就是从查询中删除员工 - 这将为每个任务提供记录的 TimeGiven 最高的所有任务,无论哪个员工执行了该任务。

我仍然不清楚这是否是您需要的...如果不是,请提供示例数据集和您想要的输出。

添加数据集后编辑:

第一个查询给出了正确的结果。我所做的只是添加一个 order by 子句以提供您的确切结果集:

select EmployeeName
  , Task
  , TimeGiven = max(TimeGiven)
from tasks
group by EmployeeName
  , Task
order by EmployeeName
  , Task desc

SQL Fiddle 与演示。点击这里查看它的实际效果。

于 2013-02-22T11:30:49.337 回答