27,579
社区成员
发帖
与我相关
我的任务
分享
---------------------------------------------
--> 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 行受影响)
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
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
select objectid,
vehsum,
min(开始时间)开始时间,
max(结束时间)结束时间,
min(开始里程)开始里程,
max(结束里程 )结束里程,
max(开始位置)开始位置,
max(结束位置) 结束位置
from tb
group by objectid,
vehsum