SQL:为每个类别选择最近的日期

时间:2011-07-13 14:31:38

标签: sql

我从数据库中提取数据,其中一个表包含两列,它们共同标识一个位置,另一列包含每次服务的日期。是否可以编写SQL查询,以便获得每个位置服务的最新时间?

因此,如果我的原始数据如下所示:

category_a  category_b  date
       1           a     1/1/01
       1           a     2/2/02
       1           b     1/2/01
       1           b     2/3/02
       2           a     1/3/01
       2           a     2/4/02
       2           b     1/4/01
       2           b     2/5/02

然后查询将返回:

category_a  category_b  date
       1           a     2/2/02
       1           b     2/3/02
       2           a     2/4/02
       2           b     2/5/02

如果数据库是以类别组合存储在单独的表中的方式创作的,那么这很容易做到。但是,我不控制这个数据库,因此我无法对其进行更改。

4 个答案:

答案 0 :(得分:9)

SELECT
    category_a,
    category_b,
    MAX(date)
FROM
    Some_Unnamed_Table
GROUP BY
    category_a,
    category_b
ORDER BY
    category_a,
    category_b

我当然不介意在我可以的时候帮助别人,或者我不会在这个网站上,但你是否真的在发布之前寻找答案?

答案 1 :(得分:2)

这是一个简单的“分组依据”使用“最近”日期是“最高价值”或max(),日期

的事实
select category_a, category_b, max(date)
from mytable
group by category_a, category_b
order by category_a, category_b -- The ORDER BY is optional, but the example data suggests it's needed

答案 2 :(得分:1)

按类别_a,category_b从tbl group中选择category_a,category_b,max(date);

答案 3 :(得分:1)

尝试

select category_a, category_b, max(date) as last_update from table group by category_a, category_b