sql小问题

lei19890721 2009-12-03 04:21:00
有个表
id objectid vehsum 开始时间 结束时间 开始里程 结束里程 开始位置 结束位置
55 7777 粤b1234 2009-1-20 2009-1-30 100 120 世界之窗 创业路
56 7777 粤b1234 2009-2-20 2009-2-30 120 140 世界之窗 创业路
57 7777 粤b1234 2009-3-20 2009-3-30 140 160 世界之窗 创业路

我现在要根据 开始时间和结束时间 还有车牌查询
现在输入车牌 粤b1234 开始时间2009-1-10 结束时间 2009-3-31
查询出
objectid vehsum 开始时间 结束时间 开始里程 结束里程 开始位置 结束位置
7777 粤b1234 2009-1-20 2009-1-30 100 160 世界之窗 创业路

...全文
97 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
z315220987 2011-08-02
  • 打赏
  • 举报
回复
哇,2年前的帖子,才看到,,,磊锅...
lei19890721 2009-12-03
  • 打赏
  • 举报
回复
谢了
华夏小卒 2009-12-03
  • 打赏
  • 举报
回复
---------------------------------------------
--> Author : js_szy
--> Target : 各位大大,小卒就是想要一朵花
--> Date : 2009-12-03 16:25:27
--> Version: SQL Server 2005
---------------------------------------------

--> 测试数据: @tb
declare @tb table (id int,objectid int,vehsum varchar(7),开始时间 datetime,结束时间 varchar(9),开始里程 int,结束里程 int,开始位置 varchar(8),结束位置 varchar(6))
insert into @tb
select 55,7777,'粤b1234','2009-1-20','2009-1-30',100,120,'世界之窗','创业路' union all
select 56,7777,'粤b1234','2009-2-20','2009-2-30',120,140,'世界之窗','创业路' union all
select 57,7777,'粤b1234','2009-3-20','2009-3-30',140,160,'世界之窗','创业路'

select
objectid=max(objectid),
vehsum,
开始时间=min(开始时间),
结束时间=max(开始时间),
开始里程=min(开始里程),
结束里程=max(结束里程),
开始位置=max(开始位置),
结束位置=max(结束位置)
from @tb
where vehsum='粤b1234' and 开始时间>='2009-1-10' and 结束时间<='2009-3-31'
group by vehsum


objectid vehsum 开始时间 结束时间 开始里程 结束里程 开始位置 结束位置
----------- ------- ----------------------- ----------------------- ----------- ----------- -------- ------
7777 粤b1234 2009-01-20 00:00:00.000 2009-03-20 00:00:00.000 100 160 世界之窗 创业路

(1 行受影响)
lei19890721 2009-12-03
  • 打赏
  • 举报
回复
哦 对不起 时间搞错了 结束时间 2009-4-30
--小F-- 2009-12-03
  • 打赏
  • 举报
回复
时间弄掉了 SORRY
--小F-- 2009-12-03
  • 打赏
  • 举报
回复
select
objectid,vehsum,min(开始时间) as 开始时间,min(结束时间) as 结束时间, min(开始里程) as 开始里程,max(结束里程) as 结束里程,开始位置,结束位置
from
tb
where
vehsum='粤b1234'
group by
objectid,vehsum,开始位置,结束位置
  • 打赏
  • 举报
回复
select objectid,  vehsum,  开始时间= '2009-1-10  '   ,结束时间='2009-3-31 ',
开始里程=(select top 1 开始里程 from tb where vehsum=t.vehsum and 开始时间 between '2009-1-10 ' and '2009-3-31 ' order by 开始时间)
结束里程=(select top 1 结束里程 from tb where vehsum=t.vehsum and 结束时间 between '2009-1-10' and '2009-3-31' order by 结束时间 desc)
开始位置 ,结束位置
from tb t

lrjt1980 2009-12-03
  • 打赏
  • 举报
回复
加条件筛选where='粤b1234'
lei19890721 2009-12-03
  • 打赏
  • 举报
回复
可以为表加个字段 id
jiangshun 2009-12-03
  • 打赏
  • 举报
回复
select objectid,vehsum,
开始时间=min(开始时间),
结束时间=max(开始时间),
开始里程=min(开始里程),
结束里程=max(结束里程),
开始位置=min(开始位置),
结束位置=max(结束位置)
from 表 where vehsum='粤b1234' and 开始时间<='2009-1-10' and 结束时间<='2009-3-31'
group by objectid,vehsum
快乐_石头 2009-12-03
  • 打赏
  • 举报
回复
select objectid,
vehsum,
min(开始时间)开始时间,
max(结束时间)结束时间,
min(开始里程)开始里程,
max(结束里程 )结束里程,
max(开始位置)开始位置,
max(结束位置) 结束位置
from tb
group by objectid,
vehsum

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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