2017-01-11 8 views
-4

現在、次のようなテーブルが画像にあります。 すべての名前を返すクエリと、各名前の最大合計値を持つtravel_dateを書きたいと思います。たとえば、この場合はクエリを返すようにします: Armand 2012-07-18とElish 2012-06-18。どうすればいい?事前ほとんどのケースでSQLの第3フィールドの最大値に対応する各名前と他のフィールドを返します

enter image description here

+3

適切なDBMSタグに適切なタグを付けます。 – Viki888

+1

'私は明確ではありませんでしたし、私はそのことについて申し訳ないこと –

+0

によってthe_tableグループから名前、最大(travel_date)を選択します。私はフィールドの合計が最大で日付の最大値ではない各名前と日付を返したいと思います。不便をおかけして申し訳ありません...質問を編集しました –

答えて

0

のおかげで、あなたは、このための手順は比較的普遍的であることがわかります。次の例は、MySQL、MSSQL、およびDB2(、とりわけ)で動作します。

SELECT 
    a.name, 
    a.travel_date, 
    a.total 
FROM test_table AS a 

INNER JOIN (SELECT `name`, MAX(total) AS `total` FROM test_table GROUP BY `name`) AS b 
ON a.name = b.name 
AND a.total = b.total; 

は、ここで私は、クエリを実行した後の結果を含めて働いていたサンプルデータの例です。 Data example - Results

編集: jarlhとして、私が書いた最初のクエリは確かに間違っていました。次のクエリは、下記のコメントで要求した結果を提供する必要があります。

+0

私だけ着目については申し訳ありませんNAME' –

+1

最初のクエリは無効です。 – jarlh

+0

ああ、あなたは私を手に入れました。それは絶対に間違っています。私はそれを調整します。 Armand、あなたが求めているものに合わせてクエリを調整しました。 –

0
SELECT name, MAX(travel_date) 
    FROM my_table 
GROUP BY name;