如何取一个表的分组中时间最晚的一条记录?

SELECT a.TruckOrder,a.AddrType ,a.OpeaterBy ,c.DeptName,

b.Driver+‘-‘+CONVERT(VARCHAR(16),e.OpeaterDT,121)AS DOpeaterDT,

b.Driver+‘-‘+CONVERT(VARCHAR(16),f.OpeaterDT,121)AS COpeaterDT,

b.Driver+‘-‘+CONVERT(VARCHAR(16),g.OpeaterDT,121)AS LOpeaterDT,

b.Driver+‘-‘+CONVERT(VARCHAR(16),h.OpeaterDT,121)AS HOpeaterDT,

b.Driver,b.TransType,CONVERT(VARCHAR(16),b.TruckDT,121)AS TruckDT,b.TruckNo,b.TruckModel

INTO #TruckWay

FROM dbo.T_TruckWay AS a

JOIN dbo.T_TruckOrder AS b ON a.TruckOrder=b.TruckOrder AND b.CFMFlag=‘Y‘ AND b.AuctionStatus=‘Y‘

JOIN BAS_DepartMent AS c ON b.DeptCode=c.DeptCode

JOIN (SELECT TruckOrder,MAX(OpeaterDT)AS OpeaterDT FROM T_TruckWay GROUP BY TruckOrder) AS d ON a.TruckOrder=d.TruckOrder AND a.OpeaterDT=d.OpeaterDT

LEFT JOIN T_TruckWay AS e ON a.TruckOrder=e.TruckOrder AND e.AddrType=3

LEFT JOIN T_TruckWay AS f ON a.TruckOrder=f.TruckOrder AND f.AddrType=4

LEFT JOIN T_TruckWay AS g ON a.TruckOrder=g.TruckOrder AND g.AddrType=5

LEFT JOIN T_TruckWay AS h ON a.TruckOrder=h.TruckOrder AND h.AddrType=6

SELECT * FROM #TruckWay

SELECT COUNT(1) AS total FROM #TruckWay

来自为知笔记(Wiz)

时间: 2024-10-19 11:44:49

如何取一个表的分组中时间最晚的一条记录?的相关文章

分组查询 每组最高的某条记录

需求是 查询每个班 年龄最小的那个人 ,需要显示如下: SQL 语句如下: select id,SUBSTRING_INDEX(GROUP_CONCAT(age order by age),',',1) as age,SUBSTRING_INDEX(GROUP_CONCAT(username order by age),',',1) as userNamefrom personGROUP BY id 原文地址:https://www.cnblogs.com/refuge/p/9061383.ht

如何OE开发中实现一个在web开发中的小效果

近期公司里面有一个需求,就是当业务人员点击订单列表中的某一条时希望打开一个新的窗口动作,然后把这一条记录中的某些值带过去,这样一个效果在web开发中很简单,或许就是分分钟的事情.但是在客户端这种开发中确实不易,尤其是OpenERP这种有诸多限制的框架里面. 那么如何实现呢? 这个地方我的想法主要分两步:1.打开一个新的窗口(Form视图的)2.把值带入到新的窗口里面. 第一步里面我按日常的操作在view里面创建一个向导(wizard),然后给name和id赋值,然后在创建一个wizard文件(名

SQL 分组(分区)排序获取第一条数据 ROW_NUMBER() OVER() PARTITION BY的使用

将最近用到的一些sql 记录下来 首先来看下应用场景: 有一张价格 "订单价格设置" 表如下: 商品编号,价格设置时间id(类似于创建时间,创建时间约早,则act_id越小) ,价格的时间段,商品价格 现在要求选出每个商品价格最大,价格设置时间id最大的那条记录,要求先考虑价格,再考虑设置时间 理想的结果:取出的是第3条记录 和第5条记录 思路:将数据根据item分区,再在每个分区中进行排序,先根据价格排序,再根据设置时间id排序,最后取出每个分组的第一条记录 实现: 利用 ROW_N

group by查询每组时间最新的一条记录

错误写法,having time = max(time)在分组之后执行,查询出来只有一条满足条件的数据.having过滤的是组,在order by之后执行 select id,userId,userFlag,lontitude,latitude,time,addr,locationdescribe from user_position group by userId having time = max(time) and userId in (select id from users where

详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)

详解 MySql InnoDB 中的三种行锁(记录锁.间隙锁与临键锁) 前言 InnoDB 通过 MVCC 和 NEXT-KEY Locks,解决了在可重复读的事务隔离级别下出现幻读的问题.MVCC 我先挖个坑,日后再细讲,这篇文章我们主要来谈谈那些可爱的锁. 什么是幻读? 幻读是在可重复读的事务隔离级别下会出现的一种问题,简单来说,可重复读保证了当前事务不会读取到其他事务已提交的 UPDATE 操作.但同时,也会导致当前事务无法感知到来自其他事务中的 INSERT 或 DELETE 操作,这就

一张表里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把mysql重启,再insert一条记录,这条记录的ID是18还是15 ?

转:https://blog.csdn.net/xzp_12345/article/details/79458586 一般情况下,我们创建的表的类型是InnoDB,如果新增一条记录(不重启mysql的情况下),这条记录的id是18:但是如果重启(文中提到的)MySQL的话,这条记录的ID是15.因为InnoDB表只把自增主键的最大ID记录到内存中,所以重启数据库或者对表OPTIMIZE操作,都会使最大ID丢失. 但是,如果我们使用表的类型是MylSAM,那么这条记录的ID就是18.因为MylSA

数据库表分组后按时间排序,取每个分组中最近的一条记录

数据库表分组后按时间排序,取每个分组中最近的一条记录.在网上找了好几个,都不行,最终找到了解决办法,Oracle亲测可以. with m as (select id,max(times) c from test_max group by id)select n.id,n.duowei from test_max n join m on m.id=n.id and m.c=n.times 第一次在博客园写知识,愿意和大家分享.

解决 MySQL 比如我要拉取一个消息表中用户id为1的前10条最新数据

我们都知道,各种主流的社交应用或者阅读应用,基本都有列表类视图,并且都有滑到底部加载更多这一功能, 对应后端就是分页拉取数据.好处不言而喻,一般来说,这些数据项都是按时间倒序排列的,用户只关心最新的动态,而不关心几个月甚至几年前消息,所以后端返回给客户端的数据是不会一次性传递全部内容的(不仅耗费流量,而且还给服务器带来巨大压力). 举个例就说MySQL,它已经给我们提供了相应的语句来支持这一功能,那就是limit关键字.比如我要拉取一个消息表中用户id为1的前10条最新数据,SQL语句如下: s

随机从表中取一个

--随机从表中取一个Select Top 1 * From table Order By NEWID()