2

次のようなテーブルがあります。

.--------------------------------.
| Name  | XX | Date              |
.--------------------------------.
| N1    | 5  | 2009-05-01        |
| N1    | 10 | 2008-01-08        |
| N2    | 8  | 2009-02-02        |
.________________________________.

私の結果は次のようになります。

.------------.
| Name  | XX |
.------------.
| N1    | 5  |
| N2    | 8  |
.____________.

名前でグループ化された行が必要ですが、最新のものだけです。この例では、日付が 2009-05-01 > 2008-01-08 であるため、XX=10 の行は必要ありません。

日付で並べ替えてグループ化する方法がわかりません:(

4

3 に答える 3

2

グループ化の目的は何ですか?

select Name, XX
  from yourTable t1
 where Date = (select MAX(Date)
                 from yourTable t2
                where t1.Name = t2.Name)

最終日の XX を合計する必要がある場合は、次のようにします。

select Name, SUM(XX)
  from yourTable t1
 where Date = (select MAX(Date)
                 from yourTable t2
                where t1.Name = t2.Name)
 group by Name
于 2009-08-05T22:06:13.473 に答える
0

申し訳ありませんが、これら 2 つはどちらも間違っています。

あなたがすべき

名前を選択、XX
 から t1
 JOIN (SELECT 名前、最大 (日付)
        から t1
        GROUP BY Name) サブクエリ
   ON t1.Name = subquery.Name AND t1.Date = subquery.Date

于 2009-08-05T22:11:17.847 に答える
0
SELECT Name, XX FROM myTable GROUP BY Name ORDER BY Date DESC

日付フィールドを引用符で囲む必要がある場合があります

`Date`
于 2009-08-05T22:05:51.417 に答える