2

列からすべての個別の値を取得するクエリを作成したいのですが、複数の値がある場合は、最も高い値を選択する必要があります。

次のようなテーブルスキーマがある場合のように:

従業員名| タスク| TimeGiven

と従業員は同じに対して複数のエントリを持つことができます、そして私は彼らのために最も高いすべての従業員のためにすべてをTask区別したいのですが、どうすればそれを行うことができますか?TasksTimeGiven


データセットの編集:

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が最も高いすべてのタスクが提供されます。

それが必要かどうかはまだわかりません...そうでない場合は、サンプルデータセットと目的の出力を提供してください。

データセットを追加した後に編集します。

最初のクエリで正しい結果が得られます。私がしたのは、正確な結果セットを提供するために、orderby句を追加することだけでした。

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

デモ付きのSQLフィドル。ここをクリックして、実際の動作を確認してください。

于 2013-02-22T11:30:49.337 に答える