0

所以,如果我有这张桌子:

    | ID  |   Date   |  Status  |  Value  |

    | 1   | 2-2-2012 |  A       |  5      |
    | 2   | 3-4-2012 |  B       |  3      |
    | 1   | 5-6-2012 |  C       |  1      |
    | 2   | 1-1-2012 |  D       |  4      |

我需要获取每个 ID 的总值和“最新”状态,如何查询?我尝试使用 group by ,但查询结果中显示的只是最旧的状态。

我需要让数据变成这样:

    | ID  |   Date   |  Status  |sum(Value)|

    | 2   | 3-4-2012 |  B       |  7       |
    | 1   | 5-6-2012 |  C       |  6       |

我是这个 SQL 的新手,不是 IT 人员,只是因为我的老板要求从我们的数据库中提取一些数据....

提前致谢...

4

2 回答 2

0

由于您没有提到任何 RDBM,因此下面的查询几乎适用于所有 RDBMS。

这使用一个子查询,它分别获取最新的date假设日期的数据类型实际上存储为DATE而不是作为字符串ID。然后将子查询的结果连接回表本身以获取其他列。

SELECT  a.ID, a.Date, a.Status, b.TotalSum
FROM    tableName a
        INNER JOIN
        (
            SELECT  ID, MAX(date) max_date, SUM(Value) totalSum
            FROM    tableName
            GROUP   BY ID
        ) b ON  a.ID = b.ID AND
                a.date = b.max_date
于 2013-04-01T07:59:33.200 回答
0

如果您使用的是mysql,那么这将起作用

 SELECT id,date,status,sum(value) 
 FROM (select * from yourTable order by DATE desc ) t  
 group by ID 
 order by ID desc
于 2013-04-01T08:01:28.893 回答