0

我有一张这样的桌子

ID     |   date  |    CODE 

1        01-02-13     VDOT
2        03-02-13     CMAX
3        05-02-13     VDOT
1        05-02-13     CMAX
1        09-02-13     VDOT

我的SQL查询如下

SELECT * FROM Table_Name ;

这显然显示了所有结果,但我只需要显示日期最近的每个代码的一个实例,所以我的结果需要看起来像这样

1        09-02-13     VDOT
1        05-02-13     CMAX

谁能告诉我如何只为每个代码(按日期的最新条目)获得一个结果?

4

3 回答 3

2
SELECT  a.*
FROM    TableName a
        INNER JOIN
        (
            SELECT  CODE, MAX(date) max_date
            FROM    TableName
            GROUP   BY CODE
        ) b ON  a.Code = b.Code AND
                a.date = b.max_date
于 2013-04-12T11:00:25.137 回答
1

尝试这个:

SELECT * FROM Table_Name 
GROUP BY CODE
ORDER BY date DESC

这将在它分组后排序。因此在分组结果中给出 ORDERS。

.

但现在试试这个:

SELECT * FROM 
(SELECT * FROM Table_Name ORDER BY date DESC) tx2 
GROUP BY CODE

这将确保 GROUP 之前的正确日期 ORDER。

于 2013-04-12T11:00:19.780 回答
0
SELECT * FROM
TABLE AS A
JOIN
(
SELECT D.CODE, MAX(D.DATE) AS DATE FROM TABLE AS D
GROUP BY D.CODE
) AS E
WHERE 
A.CODE =  E.CODE
AND A.DATE = E.DATE
于 2013-04-12T11:06:06.237 回答