sqlserver查询数据表中每个类别最新的一条记录
表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'
GROUP BY
code
) b
WHERE
a.start_time = b.start_time
AND a.code = b.code
AND a.start_time <= '2018-09-18'
ORDER BY
a.code

另:需要注意sql中时间区间的比较<=貌似有临界日期会漏掉的情况, 这里不作赘述了.以下sql和上面的异曲同工:
SELECT
a.*
FROM
TARIFF_INFO a
INNER JOIN (
SELECT
code,
MAX (start_time) 'start_time'
FROM
TARIFF_INFO
WHERE CONVERT(VARCHAR(10),start_time,121) <= '2018-09-18'
GROUP BY
code
) b ON a.code = b.code
AND a.start_time = b.start_time
AND CONVERT(VARCHAR(10),b.start_time,121) <= '2018-09-18'
ORDER BY
a.code
感谢:https://blog.csdn.net/sinat_27693393/article/details/78673971
sqlserver查询数据表中每个类别最新的一条记录的更多相关文章
- MySQL查询数据表中数据记录(包括多表查询)
MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...
- SQL查找TCar表中同一辆车前后两条记录的CarId,两条记录中有多个字段值一样
查询同一个表中某一字段值相同的记录 select * from 表名 where 字段 in(select 字段 from 表名 group by 字段 having count(1)>1) s ...
- 一条sql获取每个类别最新的一条记录
1.初始化数据 create table Products ( id ,), name ), categroy int, addtime datetime , ) insert into Produc ...
- (转)MySQL数据表中带LIKE的字符匹配查询
MySQL数据表中带LIKE的字符匹配查询 2014年07月15日09:56 百科369 MySQL数据表中带LIKE的字符匹配查询 LIKE关键字可以匹配字符串是否相等. 如果字段的值与指定的 ...
- mysql进阶(五)数据表中带OR的多条件查询
MySQL数据表中带OR的多条件查询 OR关键字可以联合多个条件进行查询.使用OR关键字时: 条件 1) 只要符合这几个查询条件的其中一个条件,这样的记录就会被查询出来. 2) 如果不符合这些查询条件 ...
- mssql sqlserver 使用sql脚本检测数据表中一列数据是否连续的方法分享
原文地址:http://www.maomao365.com/?p=7335 摘要: 数据表中,有一列是自动流水号,由于各种操作异常原因(或者插入失败),此列数据会变的不连续,下文将讲述使用sql ...
- mssql sqlserver 禁止删除数据表中指定行数据(转自:http://www.maomao365.com/?p=5323)
转自:http://www.maomao365.com/?p=5323 摘要:下文主要讲述,如何禁止删除数据表中指定行数据 最近收到用户一个需求,禁止所有人删除”表A”中,ID 为1.2.3.4.5的 ...
- 【MySQL】MySQL中查询出数据表中存在重复的值list
1.目的:查询MySQL数据表中,重复记录的值 2.示例: 3.代码: select serial_num,count(*) as count FROM card_ticket GROUP BY se ...
- SQL查询一个表中类别字段中Max()最大值对应的记录
SQL查询一个表中类别字段中Max()最大值对应的记录 SELECT A.id, A.name, A.version FROM DOC A, (SELECT id, MAX(version) ...
随机推荐
- asp.net使用jquery.form实现图片异步上传
首先我们需要做准备工作: jquery下载:http://files.cnblogs.com/tianguook/jquery1.8.rar jquery.form.js下载:http://files ...
- 求职之C++小知识点整理
1.顺序容器 1.顺序容器:vector,deque,list,forward_list,array,string.其中除list和forward_list外,其它都支持快速随机访问. deque a ...
- HDU 1234 (浙大计算机研究生复试上机考试-2005年) 开门人和关门人 (水)
开门人和关门人 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- 概率图模型学习笔记:HMM、MEMM、CRF
作者:Scofield链接:https://www.zhihu.com/question/35866596/answer/236886066来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...
- AdMaster技术副总裁谈Hadoop、营销数据、Python和挖掘平台
http://www.infoq.com/cn/news/2014/09/admaster-hadoop 卢亿雷是现任AdMaster技术副总裁,曾在联想研究院.百度基础架构部.Carbonite C ...
- 什么是JSP (转)
http://blog.csdn.net/javaloveiphone/article/details/7937170 一.什么是JSP(JavaServer Pages),原来是没有jsp的,只有s ...
- JAVA-SpringMVC基于注解模式第一个应用
项目文件结构 1. web.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <web-app x ...
- 【转】vim中多标签和多窗口的使用
原文:https://my.oschina.net/kutengshe/blog/464602 ---------------------------------------------------- ...
- Dubbo框架应用之(三)--Zookeeper注冊中心、管理控制台的安装及解说
我是在linux下使用dubbo-2.3.3以上版本号的zookeeper注冊中心客户端. Zookeeper是Apache Hadoop的子项目,强度相对较好,建议生产环境使用该注冊中心. Dubb ...
- [Algorithm] Powerset Problem
By given an array [1,2,3]: Return all possible combinations. for example: [[], [1], [2], [3], [1, 2] ...