sql 获取每个车辆的最后一条记录

aplesen 2011-09-25 03:42:26
表SS_Main是车辆的行驶记录表,
记录有
调度单号(主键),车号,行驶日期(yyy-MM-dd),序号(当天该车辆的发车序号,从1开始),行驶线路,等
现在要查询出每个车子最后的行驶线路
下面的语句可以获取车号为 12345的最后一个信使线路
select top 1 mCarNumber,mLine from SS_Main where mCarNumber='12345' order by mDate desc,mIndex desc

现在我要的是所有车辆的
请各位帮忙看看怎么写
...全文
190 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-09-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 aplesen 的回复:]
引用 9 楼 geniuswjt 的回复:

你拟造10条左右数据出来大家分析分析?
按道理不可能有问题的引用 7 楼 aplesen 的回复:
引用 6 楼 geniuswjt 的回复:

是什么数据变多了?别说是你要2列我select *你说这叫多哦?
你要么放几行测试数据上来,再说明你想要的结果引用 4 楼 aplesen 的回复:
引用 3 楼 geniuswjt 的回复:……
[/Quote]

select * from tb t where mCarNumber=(select max(mCarNumber) from tb where mid=t.mid)
aplesen 2011-09-25
  • 打赏
  • 举报
回复
问题解决了 dawugui 答案正确 感谢二位的热情回答
geniuswjt 2011-09-25
  • 打赏
  • 举报
回复
哦,你的mDate只精确到日,这样好了


--> 测试数据: [SS_Main]
if object_id('[SS_Main]') is not null drop table [SS_Main]
create table [SS_Main] (mId varchar(13),mDate varchar(10),mIndex int,mCarNumber int,mLine varchar(14))
insert into [SS_Main]
select 'YCZY101202080','2010-12-02',80,74213,'保定-徐州-凤台' union all
select 'YCZY101202081','2010-12-04',81,74213,'凤台-合肥' union all
select 'YCZY101206176','2010-12-06',176,74213,'合肥-邢台' union all
select 'YCZY101207221','2010-12-07',221,74213,'邢台-保定' union all
select 'YCZY101210220','2010-12-10',220,74213,'保定-高碑店' union all
select 'YCGK101201025','2010-12-01',25,74791,'黄岛-金华' union all
select 'YCGK101202070','2010-12-02',70,74791,'金华-南京' union all
select 'YCGK101203096','2010-12-03',96,74791,'南京-淄博' union all
select 'YCGK101205195','2010-12-05',195,74791,'淄博-南京' union all
select 'YCGK101206161','2010-12-06',161,74791,'南京-杭州-萧山'

--开始查询
select * from SS_Main a where not exists(
select 1 from SS_Main where mCarNumber=a.mCarNumber and mId>a.mId
)

--结束查询
drop table [SS_Main]

/*
mId mDate mIndex mCarNumber mLine
------------- ---------- ----------- ----------- --------------
YCZY101210220 2010-12-10 220 74213 保定-高碑店
YCGK101206161 2010-12-06 161 74791 南京-杭州-萧山

(2 行受影响)


[Quote=引用 11 楼 aplesen 的回复:]
引用 9 楼 geniuswjt 的回复:

你拟造10条左右数据出来大家分析分析?
按道理不可能有问题的引用 7 楼 aplesen 的回复:
引用 6 楼 geniuswjt 的回复:

是什么数据变多了?别说是你要2列我select *你说这叫多哦?
你要么放几行测试数据上来,再说明你想要的结果引用 4 楼 aplesen 的回复:
引用 3 楼 geniuswjt 的回复:……
[/Quote]
aplesen 2011-09-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 geniuswjt 的回复:]

你拟造10条左右数据出来大家分析分析?
按道理不可能有问题的引用 7 楼 aplesen 的回复:
引用 6 楼 geniuswjt 的回复:

是什么数据变多了?别说是你要2列我select *你说这叫多哦?
你要么放几行测试数据上来,再说明你想要的结果引用 4 楼 aplesen 的回复:
引用 3 楼 geniuswjt 的回复:

这不是来了。。大周末的,都出去玩了引用 ……
[/Quote]
好的

mId mDate mIndex mCarNumber mLine
YCZY101202080 2010-12-02 80 74213 保定-徐州-凤台
YCZY101202081 2010-12-04 81 74213 凤台-合肥
YCZY101206176 2010-12-06 176 74213 合肥-邢台
YCZY101207221 2010-12-07 221 74213 邢台-保定
YCZY101210220 2010-12-10 220 74213 保定-高碑店
YCGK101201025 2010-12-01 25 74791 黄岛-金华
YCGK101202070 2010-12-02 70 74791 金华-南京
YCGK101203096 2010-12-03 96 74791 南京-淄博
YCGK101205195 2010-12-05 195 74791 淄博-南京
YCGK101206161 2010-12-06 161 74791 南京-杭州-萧山

比如数据是以上10条 可以看出以上只有2个车子 我要的数据结果是
mCarNumber mLine
74213 保定-高碑店
74791 南京-杭州-萧山
dawugui 2011-09-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 aplesen 的回复:]
引用 5 楼 dawugui 的回复:

SQL code
select t.* from ss_main t where not exists(select 1 from ss_main where mDate > t.mDate or (mDate = t.mDate and mIndex > t.mIndex)) order by t.mCarNumber

哥们 你这个只有1条数……
[/Quote]应该为如下,不好意思.
select t.* from ss_main t where not exists(select 1 from ss_main where mCarNumber = t.mCarNumber and (mDate > t.mDate or (mDate = t.mDate and mIndex > t.mIndex))) order by t.mCarNumber 
geniuswjt 2011-09-25
  • 打赏
  • 举报
回复
你拟造10条左右数据出来大家分析分析?
按道理不可能有问题的[Quote=引用 7 楼 aplesen 的回复:]
引用 6 楼 geniuswjt 的回复:

是什么数据变多了?别说是你要2列我select *你说这叫多哦?
你要么放几行测试数据上来,再说明你想要的结果引用 4 楼 aplesen 的回复:
引用 3 楼 geniuswjt 的回复:

这不是来了。。大周末的,都出去玩了引用 1 楼 aplesen 的回复:
怎么木有人啊

不对哇
数据变多了

我一共只有629个车子……
[/Quote]
aplesen 2011-09-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dawugui 的回复:]

SQL code
select t.* from ss_main t where not exists(select 1 from ss_main where mDate > t.mDate or (mDate = t.mDate and mIndex > t.mIndex)) order by t.mCarNumber
[/Quote]
哥们 你这个只有1条数据了
aplesen 2011-09-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 geniuswjt 的回复:]

是什么数据变多了?别说是你要2列我select *你说这叫多哦?
你要么放几行测试数据上来,再说明你想要的结果引用 4 楼 aplesen 的回复:
引用 3 楼 geniuswjt 的回复:

这不是来了。。大周末的,都出去玩了引用 1 楼 aplesen 的回复:
怎么木有人啊

不对哇
数据变多了
[/Quote]
我一共只有629个车子,所以数据结果应该是629条,我按照你的写法出来的数据是660行,意思是多出来一些,应该是有的车号重复了
geniuswjt 2011-09-25
  • 打赏
  • 举报
回复
是什么数据变多了?别说是你要2列我select *你说这叫多哦?
你要么放几行测试数据上来,再说明你想要的结果[Quote=引用 4 楼 aplesen 的回复:]
引用 3 楼 geniuswjt 的回复:

这不是来了。。大周末的,都出去玩了引用 1 楼 aplesen 的回复:
怎么木有人啊

不对哇
数据变多了
[/Quote]
dawugui 2011-09-25
  • 打赏
  • 举报
回复
select t.* from ss_main t where not exists(select 1 from ss_main where mDate > t.mDate or (mDate = t.mDate and mIndex > t.mIndex)) order by t.mCarNumber 
aplesen 2011-09-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 geniuswjt 的回复:]

这不是来了。。大周末的,都出去玩了引用 1 楼 aplesen 的回复:
怎么木有人啊
[/Quote]
不对哇
数据变多了
geniuswjt 2011-09-25
  • 打赏
  • 举报
回复
这不是来了。。大周末的,都出去玩了[Quote=引用 1 楼 aplesen 的回复:]
怎么木有人啊
[/Quote]
geniuswjt 2011-09-25
  • 打赏
  • 举报
回复

--try
select * from SS_Main a where not exists(
select 1 from SS_Main where mCarNumber=a.mCarNumber and mDate>a.mDate
)
aplesen 2011-09-25
  • 打赏
  • 举报
回复
怎么木有人啊

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧