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  |
.____________.

我只想要按名称分组的行,但只是最新的。在此示例中,我不想要 XX=10 的行,因为日期 2009-05-01 > 2008-01-08。

我不知道如何按日期排序和分组:(

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
SELECT Name, XX FROM myTable GROUP BY Name ORDER BY Date DESC

您可能需要在日期字段周围加上引号

`Date`
于 2009-08-05T22:05:51.417 回答
0

对不起,但这两个都是错误的。

你应该

选择姓名,XX
 从 t1
 加入(选择名称,最大值(日期)
        从 t1
        GROUP BY 名称)子查询
   ON t1.Name = subquery.Name AND t1.Date = subquery.Date

于 2009-08-05T22:11:17.847 回答