sqlserver查询数据表中每个类别最新的一条记录 | SQL
表tariff_info, 原始数据:
想要的结果:以start_time时间倒序排序, 以code分类, 查询每一类最新的一条记录
sql:
SELECT
a.*
FROM
TARIFF_INFO a,
(
SELECT
code,
MAX (start_time) start_time
FROM
TARIFF_INFO
GROUP BY
code
) b
WHERE
a.start_time = b.start_time
AND a.code = b.code
ORDER BY
a.code
这样查询结果已经实现了, 但是需要添加过滤条件, 即当前时间在start_time和end_time之间. 如果还用上面的sql仅仅在末尾追加一个条件发现查询结果为空:
所以必须在子查询中添加同样的过滤条件方可查出正确结果, 如下面sql:
SELECT
a.*
FROM
TARIFF_INFO a,
(
SELECT
code,
MAX (start_time) start_time
FROM
TARIFF_INFO
WHERE
start_time <= '2018-09-18'

本文介绍如何在SQLServer中查询数据表`tariff_info`中每个类别最新的一条记录,并添加过滤条件确保`start_time`和`end_time`之间的当前时间。通过在子查询中应用过滤条件,可以避免查询结果为空的问题。注意时间区间比较可能存在的临界日期问题。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



